I have an xml like this
<?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>
I want to deserialize this xml list to POCO object which is
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; }
}
I found great product RestSharp for working with rest client. I want to use its deserializer and I tried 2 approaches.
1) I tried
request.RootElement = "item";
var response = Execute<Account>(request);
and I only got first Item element which is logical.
2) When I try something like
request.RootElement = "xml";
var response = Execute<List<Account>>(request);
I got null.
Where am I wrong with this?
UPDATE: The solution is in accepted answer comments
It should work if you rename the Account
class to Item
and use Execute<List<Item>>(request)
. You don't need to specify a RootElement value.
Not sure what's wrong, but I'm sure John will be by soon to let you know :-) In the meanwhile, why not just do it the manual way:
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
};
It's so clean and easy with XLinq. By adding a few extension methods to XElement you can make it even cleaner and resilient to missing elements/attributes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With