2012-04-08 22 views
0

diese XML Gegeben:XmlSerializer: Deserialize String-Array

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

Wie kann ich das mit XmlSerializer deserialisieren? Entweder in ein Array eines benutzerdefinierten Typs oder einfach in ein string[].

Ich weiß, dass dies getan werden kann, wenn die innersten Tags "String" genannt werden, aber ich möchte einen benutzerdefinierten Namen behalten.

Antwort

5

Hier ist eine Art und Weise demonstrieren die XmlSerializer in LINQPad

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

Hier ist eine andere Art und Weise XDocument mit mit

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