我需要使用XmlSerializer反序列化这样的结构。
<root>
<parameter1>
5
</parameter1>
<itemList>
<parameter2>5</parameter2>
<item>v</item>
<item>v2</item>
</itemList>
<itemList>
<parameter2>50</parameter2>
<item>v3</item>
<item>v4</item>
</itemList>
</root>
使用此代码:
[XmlRoot("root")]
public class Root
{
[XmlElement("parameter1")]
public List<ItemList> Parameter1{ get; set; }
[XmlElement("itemList")]
public List<ItemList> ItemLists{ get; set; }
}
public class ItemList
{
[XmlElement("parameter2")]
public List<ItemList> Parameter2{ get; set; }
[XmlElement("item")]
public List<Item> Items{ get; set; }
}
但它只希望每个级别上有1个元素。 如果我使用这样的对象:
[XmlRoot("root")]
public class Root
{
[XmlElement("parameter1")]
public List<ItemList> Parameter1{ get; set; }
[XmlElement("itemList")]
public List<ItemList> ItemLists{ get; set; }
}
public class ItemList
{
[XmlElement("parameter2")]
public List<ItemList> Parameter2{ get; set; }
public List<Item> Items{ get; set; }
}
它反序列化所有ItemList对象,但Item列表为空。 有什么问题?
答案 0 :(得分:0)
查看此文档http://msdn.microsoft.com/en-us/library/58a18dwa(v=vs.110).aspx
我不认为序列化程序可以理解这种结构:
<root>
<parameter1>
5
</parameter1>
<itemList>
<parameter2>5</parameter2>
<item>v</item>
<item>v2</item>
</itemList>
<itemList>
<parameter2>50</parameter2>
<item>v3</item>
<item>v4</item>
</itemList>
</root>
你应该尝试的是这样的:
<root>
<parameter1>
5
</parameter1>
<itemLists>
<itemList>
<parameter2>5</parameter2>
<items>
<item>
<parameter3>v</parameter3>
</item>
<item>
<parameter3>v2</parameter3>
</item>
</items>
</itemList>
<itemList>
<parameter2>50</parameter2>
<items>
<item>
<parameter3>v3</parameter3>
</item>
<item>
<parameter3>v4</parameter3>
</item>
</items>
</itemList>
</itemLists>
</root>
这将由以下类表示:
[XmlRoot("root")]
public class Root
{
[XmlElement("parameter1")]
public int Parameter1{ get; set; }
[XmlElement("itemLists")]
public List<ItemList> ItemLists{ get; set; }
}
public class ItemList
{
[XmlElement("parameter2")]
public List<ItemList> Parameter2{ get; set; }
[XmlElement("items")]
public List<Item> Items{ get; set; }
}
public class Item
{
[XmlElement("parameter3")]
public string Parameter3{ get; set; }
}