题
我有这样的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中添加一些扩展方法,您可以使其更加干净,并且对缺少元素/属性有弹性。
不隶属于 StackOverflow