2012-04-08 77 views
0

鑑於這種XML:的XmlSerializer:反序列化字符串數組

<Items> 
<Item>a</Item> 
<Item>b</Item> 
</Items> 

我如何反序列化這個使用XmlSerializer?或者放入一些自定義類型的數組中,或者簡單地放入一個string[]

我知道這可以完成如果最內層的標籤被稱爲「字符串」,但我想保留一個自定義名稱。

回答

5

這裏有一種方法表明其LINQPad使用XmlSerializer

void Main() 
{ 
    using(var stream = new StringReader("<Items><Item>a</Item><Item>b</Item></Items>")) 
    { 
     var serializer = new XmlSerializer(typeof(Container)); 

     var items = (Container)serializer.Deserialize(stream); 

     items.Dump(); 
    } 
} 

[XmlRoot("Items")] 
public class Container 
{ 
    [XmlElement("Item")] 
    public List<string> Items { get; set; } 
} 

這是一個使用的XDocument

void Main() 
{ 
    var doc = XDocument.Parse("<Items><Item>a</Item><Item>b</Item></Items>"); 

    var list = doc.Element("Items").Elements("Item").Select (d => (string)d); 

    list.Dump(); 
} 
另一種方式
相關問題