将同名的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 (将#修改为@)