2017-09-18 17 views
0

私は単一要素でデシリアライズしています。しかし、私はxml要素の配列を持っている私のコードは動作していませんXML配列のデシリアライズ

以下は私のコードです。

XML:以下

<data> 
    <cars> 
     <body> 
      <color>blue<color> 
      <type>sedan</type> 
     </body> 
     <details> 
      <year>2016</year> 
      <make>Infiniti</make> 
     </details> 
    </cars> 
    <cars> 
     <body> 
      <color>white<color> 
      <type>SUV</type> 
     </body> 
     <details> 
      <year>2016</year> 
      <make>Lexus</make> 
     </details> 
    </cars> 
</data> 

DTO

[XmlRoot("cars")] 
public class CarDetails 
{ 
     [XmlElement("body")] 
     public Body BodyList { get; set; } 

     [XmlElement("details")] 
     public DetailsList details { get; set; } 
} 

public class Body 
     { 
      public string Color { get; set; } 
      public string Type { get; set; } 
     } 

public class DetailsList 
     { 
      public int Year { get; set; } 
      public string Make { get; set; } 
     } 

デシリアライズのためのコードです:

CarDetails[] details; 
XmlSerializer serializer = new XmlSerializer(typeof(CarDetails[])); 
      using (TextReader reader = new StringReader(output)) 
      { 
       details= (CarDetails[])serializer.Deserialize(reader); 
      } 

すべてのXML列

+0

あなたはどうしていますか? – mech

答えて

0

ファーストをデシリアライズする方法を私を助けてください、あなたのXMLはinvaliですd。

<color>blue<color> 

ここで色を忘れてしまった。 第二に、自分ではしない方がいいです。いくつかのツールを使って作る方が良い。 online XML to C# generatorのようになります。 JSONにも同様のものがあります。私の場合は、この結果が得られました(データクラスを見てください):

[XmlRoot(ElementName="body")] 
public class Body { 
    [XmlElement(ElementName="color")] 
    public string Color { get; set; } 
    [XmlElement(ElementName="type")] 
    public string Type { get; set; } 
} 

[XmlRoot(ElementName="details")] 
public class Details { 
    [XmlElement(ElementName="year")] 
    public string Year { get; set; } 
    [XmlElement(ElementName="make")] 
    public string Make { get; set; } 
} 

[XmlRoot(ElementName="cars")] 
public class Cars { 
    [XmlElement(ElementName="body")] 
    public Body Body { get; set; } 
    [XmlElement(ElementName="details")] 
    public Details Details { get; set; } 
} 

[XmlRoot(ElementName="data")] 
public class Data { 
    [XmlElement(ElementName="cars")] 
    public List<Cars> Cars { get; set; } 
} 
関連する問題