微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将同名的xml元素反序列化为List

如何解决将同名的xml元素反序列化为List

我正在尝试反序列化具有如下结构的 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 举报,一经查实,本站将立刻删除。