Frage

Ich habe eine xml wie diese

<?xml version="1.0" encoding="utf-8"?> 
    <xml> 
            <item> 
                    <accountid>1</accountid> 
                    <accounttypeid>1</accounttypeid> 
                    <accounttypename/> 
                    <accountbankid>1</accountbankid> 
                    <accountbankname/> 
                    <accountsaldo>0</accountsaldo> 
            </item> 
            <item> 
                    <accountid>2</accountid> 
                    <accounttypeid>1</accounttypeid> 
                    <accounttypename/> 
                    <accountbankid>2</accountbankid> 
                    <accountbankname/> 
                    <accountsaldo>0</accountsaldo> 
            </item> 
            ... 
    </xml> 

Ich möchte diese XML-Liste zu POCO Objekt deserialisieren, die

ist
public class Account 
{ 
        public string AccountId { get; set; } 
        public string AccountTypeId { get; set; } 
        public string AccountTypeName { get; set; } 
        public string AccountBankId { get; set; } 
        public string AccountBankName { get; set; } 
        public string AccountSaldo { get; set; } 
} 

Ich fand großes Produkt RestSharp mit Rest-Client arbeiten. Ich will seine Deserializer verwenden und ich versuchte, zwei Ansätze.

1) Ich habe versucht,

request.RootElement = "item";

var response = Execute<Account>(request);

und ich nur zuerst Artikel Element bekam die logisch ist.

2) Wenn ich versuche, so etwas wie

request.RootElement = "xml";

var response = Execute<List<Account>>(request);

Ich habe null.

Wo bin ich mit diesem falsch?

UPDATE : Die Lösung ist in akzeptierte Antwort Kommentare

War es hilfreich?

Lösung

Es sollte funktionieren, wenn Sie die Account Klasse Item und Verwendung Execute<List<Item>>(request) umbenennen. Sie brauchen keinen RootElement Wert angeben müssen.

Andere Tipps

Nicht sicher, was falsch ist, aber ich bin sicher, dass John von bald sein, damit Sie weiß :-) In der Zwischenzeit, warum es nicht nur die manuelle Art und Weise tun:

    var root = XElement.Parse(xmlString);
    var accounts = from it in root.Element("xml").Elements("item")
                   select new Account() {
                                            AccountId = it.Element("accountid").Value,
                                            AccountTypeId = it.Element("accounttypeid").Value,
                                            AccountTypeName = it.Element("accounttypename").Value,
                                            AccountBankId = it.Element("banktypeid").Value,
                                            AccountBankName = it.Element("banktypename").Value,
                                            AccountSaldo = it.Element("accountsaldo").Value
                                        };

Es ist so sauber und einfach mit XLinq. einige Erweiterungsmethoden XElement Durch das Hinzufügen Sie können es noch sauberer machen und elastisch, um fehlende Elemente / Attribute.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top