C# 反序列化XML-如何反序列化嵌套列表?
我正在尝试反序列化此XML:C# 反序列化XML-如何反序列化嵌套列表?,c#,xml,xml-deserialization,C#,Xml,Xml Deserialization,我正在尝试反序列化此XML: <Response> <Make Name="Audi"> <Model Name="A7"> <Specs> <Spec Identifier="330025">...</Spec> <Spec Identifier="330026">...</Spec> <Spec Identifier="330027">...</Spec> <Spec
<Response>
<Make Name="Audi">
<Model Name="A7">
<Specs>
<Spec Identifier="330025">...</Spec>
<Spec Identifier="330026">...</Spec>
<Spec Identifier="330027">...</Spec>
<Spec Identifier="330028">...</Spec>
<Spec Identifier="330008">...</Spec>
<Spec Identifier="330038">...</Spec>
<Spec Identifier="330024">...</Spec>
<Spec Identifier="330019">...</Spec>
<Spec Identifier="330020">...</Spec>
模型和响应内部都有规格。XML的设置方式将进入模型内部
您还需要所有其他项目的属性
从这样开始
[XmlRoot]
public class Response
{
[XmlElement("Make")] // Use XmlElement to get multiple items without a containing XML tag
public List<Make> Make { get; set; }
}
public class Spec
{
[XmlAttribute("YearProductionStarts")]
public string YearProductionStarts { get; set; }
[XmlAttribute("YearProductionEnd")]
public string YearProductionEnd { get; set; }
}
public class Make
{
[XmlElement("Model")]
public List<Model> Model { get; set; }
}
public class Model
{
[XmlArray("Specs"), XmlArrayItem("Spec")]
public List<Spec> Spec { get; set; }
}
如果这不起作用,创建一个对象并将其序列化,然后查看该XML和您要使用的XML之间的差异
//Deserialize responseXml to response object
var xmLserializer = new XmlSerializer(typeof(ResponseGetSpec));
using (var reader = new StringReader(responseXml))
{
return (ResponseGetSpec)xmLserializer.Deserialize(reader);
}
[XmlRoot]
public class Response
{
[XmlElement("Make")] // Use XmlElement to get multiple items without a containing XML tag
public List<Make> Make { get; set; }
}
public class Spec
{
[XmlAttribute("YearProductionStarts")]
public string YearProductionStarts { get; set; }
[XmlAttribute("YearProductionEnd")]
public string YearProductionEnd { get; set; }
}
public class Make
{
[XmlElement("Model")]
public List<Model> Model { get; set; }
}
public class Model
{
[XmlArray("Specs"), XmlArrayItem("Spec")]
public List<Spec> Spec { get; set; }
}