Joh*_*ead 3 c# xml-serialization
我得到一个XML类型的数据,比如这个;
<Response>
<Clients>
<Client>
<ID>1</ID>
<Name>John</Name>
<Age>25</Age>
<Address>Some address</Address>
</Client>
<Client>
<ID>2</ID>
<Name>Mark</Name>
<Age>22</Age>
<Address>Some address2</Address>
</Client>
<Client>
<ID>3</ID>
<Name>Phil</Name>
<Age>30</Age>
<Address>Some address3</Address>
</Client>
</Clients>
</Response>
Run Code Online (Sandbox Code Playgroud)
在C#中,我有以下代码:
[XmlRoot("Response")]
public class MyClients
{
[XmlElement("Clients", typeof(MyClient))]
public List<MyClient> Clients { get; set; }
}
public class MyClient
{
[XmlElement("ID")]
public int ID;
[XmlElement("Name")]
public string Name;
[XmlElement("Age")]
public int Age;
[XmlElement("Address")]
public string Address;
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用这个数据
public ActionResult GetClients()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("someUrl");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
XmlSerializer serializer = new XmlSerializer(typeof(WFMClientsList));
Stream receiveStream = response.GetResponseStream();
WFMClientsList clients = (MyClients)serializer.Deserialize(receiveStream);
}
Run Code Online (Sandbox Code Playgroud)
但我没有得到任何答复.
任何人都可以解释如何List<MyClient>正确反序列化XML ?
问题是您声明的内容实际上与您的XML不匹配.如果从当前声明序列化对象,则会得到:
<?xml version="1.0" encoding="utf-16"?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Clients>
<ID>1</ID>
<Name>John</Name>
<Age>25</Age>
<Address>Some address</Address>
</Clients>
</Response>
Run Code Online (Sandbox Code Playgroud)
尝试:
[XmlRoot("Response")]
public class MyClients
{
[XmlArray("Clients")]
[XmlArrayItem("Client")]
public List<MyClient> Clients { get; set; }
}
[XmlRoot("Client")]
public class MyClient
{
[XmlElement("ID")]
public int ID;
[XmlElement("Name")]
public string Name;
[XmlElement("Age")]
public int Age;
[XmlElement("Address")]
public string Address;
}
Run Code Online (Sandbox Code Playgroud)
哪个产生:
<?xml version="1.0" encoding="utf-16"?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Clients>
<Client>
<ID>1</ID>
<Name>John</Name>
<Age>25</Age>
<Address>Some address</Address>
</Client>
</Clients>
</Response>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6619 次 |
| 最近记录: |