2016-12-07 22 views
0

XMLの要素をオブジェクトのリストにシリアル化する際に問題が発生しています。オブジェクトのリストにサブ要素を逆シリアル化できません

[XmlType("item")] 
    public class Item 
    { 
     [XmlAttribute("id")] 
     public string id { get; set; } 
     [XmlAttribute("markedfordeletion")] 
     public string markedfordeletion { get; set; } 
     ... 
     [XmlAttribute("datasource")] 
     public string datasource { get; set; } 

     [XmlElement("data")] 
     public Data data { get; set; } 

     [XmlElement("servings")] 
     public List<Serving> servings { get; set; } 
    } 
} 

ある。これは、私がXML

public void ParseSearch(string xml) 
{ 
    XmlSerializer serializer = new XmlSerializer(typeof(List<Item>), new XmlRootAttribute("item")); 
    StringReader stringReader = new StringReader(xml); 
    var productList = (List<Item>)serializer.Deserialize(stringReader); 
} 

をシリアル化しようとする方法である

<result> 
    <stats> 
    <numitemsfound>1451</numitemsfound> 
    <startfrom>0</startfrom> 
    </stats> 
    <items> 
    <item> 
     <id>1</id> 
     <markedfordeletion>0</markedfordeletion> 
     <thumbsrc> 
     </thumbsrc> 
     <thumbsrclarge> 
     </thumbsrclarge> 
     ... 
     <datasource>65</datasource> 
     <data> 
     <amount>100</amount> 
     <kj>389</kj> 
     <kcal>92.91</kcal> 
     <fat_gram>0.2</fat_gram> 
     <fat_sat_gram>-1</fat_sat_gram> 
     <kh_gram>20.03</kh_gram> 
     </data> 
     <servings> 
     <serving> 
      <serving_id>386</serving_id> 
      <weight_gram>150</weight_gram> 
     </serving> 
     </servings> 
    </item> 
</result> 

私は直列化のために用意したクラスしかし、私は得る:

この

はXMLですエラー ----> System.InvalidOperationException : <result xmlns=''> was not expected.この問題を解決するのを手伝ってもらえますか?

答えて

1

あなたがresultの、ないタイプListのインスタンスをシリアライズするシリアライザを使用する必要があります。

XmlSerializer serializer = new XmlSerializer(typeof(Result), new XmlRootAttribute("result")); //whatever `Result` actually is as type). 

あなたは全部1かゼロかのどちらか、文書の部分だけをシリアライズし、デシリアライズcan'tまったく。

ですから、ルート型が必要です。

[XmlRoot("result")] 
public class Result 
{ 
    public Stats Stats {get; set;} 
    [XmlArray("items")] 
    [XmlArrayItem("item")] 
    public List<Item> Items { get; set; } 
} 
関連する問題