RestSharpを使用してXMLリストを脱直するにはどうすればよいですか?
質問
私はこのようなXMLを持っています
<?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>
このXMLリストをPocoオブジェクトに脱着したい
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; }
}
私は素晴らしい製品を見つけました Restsharp RESTクライアントと連携するため。その脱介器を使いたいと思って、2つのアプローチを試しました。
1)試しました
request.RootElement = "item";
var response = Execute<Account>(request);
そして、私は論理的な最初のアイテム要素しかありませんでした。
2)私がそのようなことを試してみるとき
request.RootElement = "xml";
var response = Execute<List<Account>>(request);
私はヌルを手に入れました。
私はこれがどこで間違っていますか?
アップデート: :解決策は、受け入れられた回答のコメントにあります
解決
名前を変更すると機能するはずです Account
クラスへ Item
そして使用します Execute<List<Item>>(request)
. 。ルテレメント値を指定する必要はありません。
他のヒント
何が悪いのかわからないが、ジョンはすぐにあなたに知らせると確信している:-)その間、なぜそれを手動でやらないのか:
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
};
Xlinqでとてもきれいで簡単です。 Xelementにいくつかの拡張メソッドを追加することにより、欠落している要素/属性に対してさらにクリーンで弾力性のあるものにすることができます。
所属していません StackOverflow