问题描述
我正在尝试反序列化具有如下结构的 xml 文件:
<items>
<item id="1">
<group>1</group>
<param name="Width">100</param>
<param name="Length">100</param>
<price>100</price>
<name>Name 1</name>
<param name="Weight" unit="gr">100</param>
</item>
<item id="2">
<group>1</group>
<param name="Width">200</param>
<param name="Length">200</param>
<price>200</price>
<name>Name 2</name>
<param name="Weight" unit="gr">200</param>
</item>
<item id="3">
<group>3</group>
<price>300</price>
<name>Name 3</name>
<param name="Weight" unit="lbs">300</param>
</item>
</items>
唯一的问题是 param
元素。在不同的 item
元素中,可以有 1 到 3 个 param
元素。我需要将它们全部反序列化,但列表 Param
总是以空结尾。
我的反序列化类如下所示:
[XmlRoot("items")]
public class Items
{
[XmlElement("item")]
public List<Item> Items{ get; set; }
}
[XmlRoot("item")]
public class Item
{
[XmlElement("group")]
public int Group{ get; set; }
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("price")]
public decimal Price { get; set; }
[XmlElement("param")]
public List<Param> Params { get; set; }
}
[XmlRoot("param")]
public class Param
{
[XmlAttribute(AttributeName = "name")]
public string Name { get; set; }
[XmlAttribute(AttributeName = "unit")]
public string Unit { get; set; }
[DeserializeAs(Content = true)]
public string Value { get; set; }
}
还尝试添加 [XmlArray("param")]
和 [XmlArrayItem("param")]
但结果相同。
谁能告诉我这门课有什么问题。或者,也许还有另一种方法可以将这个 param
元素反序列化为单个属性?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)