如何将 xml 序列化/反序列化为 C# 对象?
How to serialize / deserialize xml into a C# object?
如何将此 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;
}
我找到了解决方案:
public class Response
{
[System.Xml.Serialization.XmlElementAttribute("Business", typeof(ResponseBusiness), Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public object[] Items { get; set; }
}
public partial class ResponseBusiness
{
string NumberField;
string NameField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Number
{
get
{
return this.NumberField;
}
set
{
this.NumberField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Name
{
get
{
return this.NameField;
}
set
{
this.NameField = value;
}
}
我这样调用 XmlSerializer class:
var serializer = new XmlSerializer(typeof(Response), new XmlRootAttribute("Response"));
而且我可以这样阅读信息:
string businessNumber = ((ResponseBusiness)result.Items[0]).Number;
希望能帮到别人。
如何将此 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;
}
我找到了解决方案:
public class Response
{
[System.Xml.Serialization.XmlElementAttribute("Business", typeof(ResponseBusiness), Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public object[] Items { get; set; }
}
public partial class ResponseBusiness
{
string NumberField;
string NameField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Number
{
get
{
return this.NumberField;
}
set
{
this.NumberField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Name
{
get
{
return this.NameField;
}
set
{
this.NameField = value;
}
}
我这样调用 XmlSerializer class:
var serializer = new XmlSerializer(typeof(Response), new XmlRootAttribute("Response"));
而且我可以这样阅读信息:
string businessNumber = ((ResponseBusiness)result.Items[0]).Number;
希望能帮到别人。