我有A班。B班和C班是A班的一部分。
Class A
{
//Few Properties of Class A
List<typeof(B)> list1 = new List<typeof(B)>()
List<typeof(C)> list2 = new List<typeof(C)>()
Nsystem NotSystem { get; set; } // Enum Property Type
}
public enum Nsystem {
A = 0,
B = 1,
C = 2
}
我想序列化 A 类并用它生成 XML;我还想序列化 list1 和 list2 以及 Enum...
序列化此 XML 的好方法是什么,因为我需要将对象转换为 XML 以及将 XML 转换为对象的功能...
有哪些好的选择可以做到这一点?
谢谢
你可以使用XML序列化器 http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx:
var aSerializer = new XmlSerializer(typeof(A));
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
aSerializer.Serialize(sw, new A()); // pass an instance of A
string xmlResult = sw.GetStringBuilder().ToString();
为了使其正常工作,您还需要在您的类型上添加 xml 注释,以确保它使用正确的命名进行序列化,即:
public enum NSystem { A = 0, B = 1, C = 2 }
[Serializable]
[XmlRoot(ElementName = "A")]
Class A
{
//Few Properties of Class A
[XmlArrayItem("ListOfB")]
List<B> list1;
[XmlArrayItem("ListOfC")]
List<C> list2;
NSystem NotSystem { get; set; }
}
Edit:
Enum
默认情况下,属性会被序列化,属性名称包含 XML 元素,其枚举值作为 XML 值,即,如果属性NotSystem
在你的例子中有值C
它将被序列化为
<NotSystem>C</NotSystem>
当然,您始终可以通过进行适当的注释来更改属性的序列化方式,即使用[XmlAttribute]
所以它被序列化为属性,或者[XmlElement("Foobar")]
所以它是使用序列化的Foobar
作为元素名称。 MSDN 上提供了更广泛的文档,请查看上面的链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)