派生对象的XML反序列化。 [英] XML deserialization for derived objects.
本文介绍了派生对象的XML反序列化。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何反序列化文档XML:
---------------------------------- -----------
How deserialize document XML:
---------------------------------------------
<something id=""234"">
<items>
<item name=""Obj1"">
<a>1</a>
<k>1</k>
</item>
<item name=""Obj2"">
<c>5</c>
<d>2</d>
<e>1</e>
</item>
</items>
</something>
我无法获得物品价值元素
---------------------------------------------
I can't get value elemnts in item
---------------------------------------------
[XmlRoot("something")]
public class Something: ClassBase
{
[XmlAttribute("id")]
public string id;
[XmlArray("items")]
public ItemsCollection forms { set; get; }
public Something(): base() { }
}
[XmlType("item")]
public class ItemsCollection: CollectionClassBase<Item>
{
public ItemsCollection() : base() { }
}
[XmlType("item")]
public class Item: ClassBase
{
[XmlAttribute("name"), DefaultValue("")]
public string name { set; get; }
}
[XmlType("item")]
public class ItemObj1 : Item
{
[XmlElement("a"), DefaultValue("")]
public string a { set; get; }
[XmlElement("b"), DefaultValue("")]
public string b { set; get; }
}
推荐答案
我建议使用xsd.exe工具 [ ^ ]可以从xml生成正确的类定义。
请按照以下步骤操作:使用xsd.exe自动生成实体类,用于XML序列化和反序列化 [ ^ ]
我建议改变你的XML结构:
I'd suggest to use xsd.exe tool[^] which can generate proper class(es) definition from xml.
Follow these steps: Auto generating Entity classes with xsd.exe for XML Serialization and De-Serialization[^]
I'd suggest to change your XML structure:
<something id="234">
<items>
<item name="Obj1">
<a>1</a>
<k>1</k>
to:
to:
<something id="234">
<items>
<item name="Obj1">
<property name="a">1</a>
<property name="k">1</k>
它应该在XML规范化时帮助你。
[/ EDIT]
It should help you while XML normalization.
[/EDIT]
这篇关于派生对象的XML反序列化。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文