RestSharpを使用してXMLリストを脱直するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4077850

  •  28-09-2019
  •  | 
  •  

質問

私はこのような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にいくつかの拡張メソッドを追加することにより、欠落している要素/属性に対してさらにクリーンで弾力性のあるものにすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top