Wie kann ich deserialisieren Xml Liste Restsharp mit?
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
istpublic 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
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.