我有这样的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客户端合作。我想使用其避难所,并尝试了两种方法。

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非常干净。通过在Xlement中添加一些扩展方法,您可以使其更加干净,并且对缺少元素/属性有弹性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top