Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反序列化XML-如何反序列化嵌套列表?_C#_Xml_Xml Deserialization - Fatal编程技术网

C# 反序列化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

我正在尝试反序列化此XML:

<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; }
}