c# - 将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
元素反序列化为单独的属性?
解决方案
推荐阅读
- java - 可用于分析基于 maven 的项目中的依赖关系的工具
- reinforced-typings - 配置增强类型以添加自定义打字稿交集类型
- javascript - 如何替换javascript中的空格?
- angularjs - AngularJS - 带有数字/长度的过滤复选框
- java - 现有事务中的程序化弹簧事务
- javascript - 如何用 JS 改变滚动条的形状
- javascript - 如何使用javascript获取特定值之前的所有内容
- c# - 如何使用 AJAX 更新每个评论 - MVC
- python - 使用该登录名我想在其他文件中存储一些值,例如名称、电子邮件地址
- vue.js - Vue CLI:将默认样式语言设置为 scss