我有这样的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>
Run Code Online (Sandbox Code Playgroud)
我想将这个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; }
}
Run Code Online (Sandbox Code Playgroud)
我找到了很棒的产品RestSharp与rest客户端一起工作.我想使用它的解串器,我尝试了两种方法.
1)我试过了
request.RootElement = "item";
var response = Execute<Account>(request);
我只有第一个符合逻辑的Item元素.
2)当我尝试类似的东西时
request.RootElement = "xml";
var response = Execute<List<Account>>(request);
我没了.
我错在哪里?
更新:解决方案在接受的答案评论中
如果您将Account
类重命名为Item
并使用它,它应该工作Execute<List<Item>>(request)
.您无需指定RootElement值.
不知道出了什么问题,但我确信John会很快告诉你:-)同时,为什么不用手工方式呢:
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
};
Run Code Online (Sandbox Code Playgroud)
使用XLinq,它非常简洁.通过向XElement添加一些扩展方法,您可以使其更加清晰,并且能够恢复缺少的元素/属性.
归档时间: |
|
查看次数: |
6791 次 |
最近记录: |