【发布时间】:2018-10-11 02:43:51
【问题描述】:
如何将此 xml 字符串序列化/反序列化为 C# 对象?
<Response>
<Business Number="99696" Name="My business" Address="" />
<Purchase PurchaseID="7" CustomerID="0" >
<Item Name="item 1" Qty="100" UnitCost="10.0000" />
<Item Name="item2" Qty="200" UnitCost="20.0000" />
</Purchase>
</Response>
谢谢 鲁本克
我认为是一个不同的问题,因为所有问题通常都讨论一个级别和/或项目列表
我的问题是我有不同的级别:
<Response> //root
<Business ... /> //level 1
<Purchase... > //level 1
<Item ... /> // list
我的号码、姓名等为空。
这是我迄今为止尝试过的:
[Serializable, XmlRoot("Response")]
public class Response
{
public Depot depot = new Depot();
// I have tried this also:
//[XmlElement("Number")]
//public string Number { get; set; }
//[XmlElement("Name")]
//public string Name { get; set; }
}
public class Depot
{
[XmlElement("Number")]
public string Number { get; set; }
[XmlElement("Name")]
public string Name { get; set; }
}
static object DeserializeResponse(string responseString)
{
var serializer = new XmlSerializer(typeof(Response));
Response result;
using (var reader = new StringReader(responseString))
{
result = (Response)serializer.Deserialize(reader);
}
return result;
}
【问题讨论】:
-
到目前为止你尝试了什么?
-
您需要使用 [XmlAttribute] 属性标记从 xml 节点属性填充的对象属性,并使用 [XmlElement("Item")] 属性标记购买对象中的 Items 数组属性。在您构造所有类并将 Response 类类型提供给 XmlSerializer 构造函数之后,XmlSerializer 的 Deserialize 方法将完成这项工作。验证 Deserialize 的输出对象并在必要时修改对象类定义。
-
好吧,没关系,我找到了解决办法
-
请考虑删除这个问题(因为它很可能是重复的)或至少发布解决方案作为答案并接受它。
-
不要将答案放在问题中,请回答您自己的问题,如stackoverflow.com/help/self-answer所示。
标签: c# xmlserializer