.net Xml序列化/反序列化和html字符编码
我正在使用.NET XmlSerializer将xml序列化为对象,反之亦然。xml包含编码的特殊字符,例如大于和/或小于符号。当xml序列化为对象时,我需要将那些大于/小于的符号实际转换为“”,当从对象转换为xml时,我需要将实际的“”转换为其编码版本 我在UI中做了一些变通/破解来进行转换,但我正在寻找更好的方法来处理这个问题。我希望在实际的序列化程序中会有一些参数设置,在我序列化/反序列化时可以这样做。我环顾四周,与传递给序列化程序的各种编剧/蒸汽一起玩,但找不到任何东西.net Xml序列化/反序列化和html字符编码,.net,serialization,xmlserializer,.net,Serialization,Xmlserializer,我正在使用.NET XmlSerializer将xml序列化为对象,反之亦然。xml包含编码的特殊字符,例如大于和/或小于符号。当xml序列化为对象时,我需要将那些大于/小于的符号实际转换为“”,当从对象转换为xml时,我需要将实际的“”转换为其编码版本 我在UI中做了一些变通/破解来进行转换,但我正在寻找更好的方法来处理这个问题。我希望在实际的序列化程序中会有一些参数设置,在我序列化/反序列化时可以这样做。我环顾四周,与传递给序列化程序的各种编剧/蒸汽一起玩,但找不到任何东西 有人知道这方面的
有人知道这方面的最佳解决方案是什么吗?
XmlSerializer
在默认情况下应该完全做到这一点。如果不是,你能发布一些细节吗
将对象序列化为XML时,字符串值(如
)会自动转义-转换为
和
),因为这些字符用于标记中,因此它们不会出现在元素中
当您将XML反序列化回对象时,它会执行相反的操作,即返回
。看看这个控制台应用程序和输出:
class Program
{
static void Main(string[] args)
{
var myClass = new MyClass {Value = "<div>I am HTML!</div>"};
var serializer = new XmlSerializer(typeof (MyClass));
var xmlString = new StringBuilder();
using (var writer = new StringWriter(xmlString))
{
serializer.Serialize(writer, myClass);
}
Console.WriteLine("Serialized:");
Console.WriteLine(xmlString.ToString());
Console.WriteLine();
using (var reader = new StringReader(xmlString.ToString()))
{
var deserializedClass = serializer.Deserialize(reader) as MyClass;
Console.WriteLine("Deserialized myClass.Value: " + deserializedClass.Value);
}
Console.ReadLine();
}
}
类程序
{
静态void Main(字符串[]参数)
{
var myClass=newmyclass{Value=“我是HTML!”};
var serializer=新的XmlSerializer(typeof(MyClass));
var xmlString=新的StringBuilder();
使用(var writer=newstringwriter(xmlString))
{
serializer.Serialize(writer,myClass);
}
Console.WriteLine(“序列化:”);
Console.WriteLine(xmlString.ToString());
Console.WriteLine();
使用(var reader=newstringreader(xmlString.ToString()))
{
var deserializedClass=序列化程序。将(读取器)反序列化为MyClass;
WriteLine(“反序列化的myClass.Value:+deserializedClass.Value”);
}
Console.ReadLine();
}
}
序列化:
我是HTML/div
反序列化myClass。值:我是HTML代码>