c# - Xml 集合的反序列化
问题描述
我有一个如下的 XML 字符串:
<ArrayOfObject>
<Object>
<Properties>
<Property>
<Name>TaskId1</Name>
<Value>xxx</Value>
</Property>
<Property>
<Name>Name</Name>
<Value>demo</Value>
</Property>
</Properties>
</Object>
<Object>
<Properties>
<Property>
<Name>TaskId2</Name>
<Value>xxx</Value>
</Property>
<Property>
<Name>Name</Name>
<Value>demo2</Value>
</Property>
</Properties>
</Object>
</ArrayOfObject>
下面是我的 C# 代码。顺便说一句,我尝试使用xmlArray和xmlArrayItem属性,但没有成功。
[XmlRoot(ElementName = "ArrayOfObject", IsNullable = false)]
public class GetTaskListResponse
{
[XmlArray("Object")]
public List<ObjectList> Objects { get; set; }
}
public class ObjectList
{
[XmlArray("Properties")]
[XmlArrayItem("Property")]
public List<Property> PropertyList { get; set; }
}
public class Property
{
public string Name { get; set; }
public string Value { get; set; }
}
如何将此 XML 反序列化为 c# 对象?
我就是想不通。
解决方案
您可能需要对数据结构进行一些更改。请注意原始结构的变化,特别是如何处理“属性/属性”
当您想要创建与您的 Xml 对应的 C# 数据结构时,Xml to CSharp将是一个很好的参考。
[XmlRoot(ElementName="Property")]
public class Property
{
[XmlElement(ElementName="Name")]
public string Name { get; set; }
[XmlElement(ElementName="Value")]
public string Value { get; set; }
}
[XmlRoot(ElementName="Properties")]
public class Properties
{
[XmlElement(ElementName="Property")]
public List<Property> Property { get; set; }
}
[XmlRoot(ElementName="Object")]
public class Object
{
[XmlElement(ElementName="Properties")]
public Properties Properties { get; set; }
}
[XmlRoot(ElementName="ArrayOfObject")]
public class GetTaskListResponse
{
[XmlElement(ElementName="Object")]
public List<Object> Object { get; set; }
}
这将给出一个输出为
推荐阅读
- .net-core - 将站点从 12 升级到 13 并将 .net 框架升级到 .net 核心后,Form Builder 缺少样式和 js 文件
- c# - 从 Web 服务 c# 反序列化 xs:AnyType
- python - Python套接字和结束循环
- reactjs - 如何仅更改使用地图呈现的一类多个按钮
- github - 通过 workflow_run 运行时,拉取请求未检测到操作
- terraform - 如何使用 Terraform 将 LogAnalyticsWorkSpace 与数据工厂集成?
- php - 如何在不同的表中创建 3 种类型的用户,但他们都有电子邮件、密码、用户名?
- c# - 在具有文本类型的 datagridview 单元格中显示图像
- go - 如何使用奇偶线程打印 N 个整数
- python - matplotlib 散点图擦除图像