顧客名を保存するビジネス オブジェクトがいくつかあります。名前に , などの特殊文字が含まれている場合があり
ます
。これらの名前はサードパーティからインポートされたもので、ソースから変な文字を削除できません。
アプリケーションは XmlSerializer によって顧客オブジェクトをシリアル化/逆シリアル化しますが、ここで奇妙なことは、特殊文字で名前をシリアル化するとエラーが発生せず、結果が次のようになること<Name>Jim <Name>
です。しかし、出力 xml を逆シリアル化すると、例外が発生しますThere is an error in XML document (3, 15)
。
では、アプリケーションでこれらの特殊文字を処理するにはどうすればよいでしょうか? ありがとう!
いくつかのテストコードを添付:
public class Customer
{
public string Name;
}
class Program
{
public static T DeserializeFromXml<T>(string settings) where T : class
{
var serializer = new XmlSerializer(typeof(T));
var reader = new StringReader(settings);
var result = serializer.Deserialize(reader);
return result as T;
}
public static string SerializeToXml<T>(T settings)
{
var serializer = new XmlSerializer(typeof(T));
var writer = new StringWriter();
serializer.Serialize(writer, settings);
return writer.ToString();
}
static void Main(string[] args)
{
var str = new char[] { 'J', 'i', 'm', (char)2 };
var customer = new Customer { Name = new string(str) };
var output = SerializeToXml(customer);
var obj = DeserializeFromXml<Customer>(output);
}
}