将WebService的XML响应序列化为对象(C#)
问题描述:
我正在调用REST Web服务。将WebService的XML响应序列化为对象(C#)
响应看起来是这样的:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<data>
<status>1</status>
<message>OK</message>
<results>
<result>
<account>12345</account>
<to></to>
<from>054321</from>
<message>Testing</message>
<flash></flash>
<replace></replace>
<report></report>
<concat></concat>
<id>f8d3eea1cbf6771a4bb02af3fb15253e</id>
</result>
</results>
</data>
我有一个名为 “SMSSendingResponse” 类,它看起来是这样的:
public class SMSSendingResponse
{
public string AccountNumber { get; set; }
public string Status { get; set; }
public string Message { get; set; }
public string ResponseID { get; set; }
public SMSMessage SMSMessage { get; set; }
}
SMSMessage看起来是这样的:
public class SMSMessage
{
public string To { get; set; }
public string From { get; set; }
public string Message { get; set; }
}
正如你所看到的,我忽略了一些返回的元素(flash,替换等)。
将我返回的XML序列化到此对象中的最佳方式是什么?
我试过使用XmlSerializer,但是这引发了一个错误......我想因为我没有使用XmlSerializer首先序列化。
如果是JSON,我会使用NewtonSoft.Json库... 虽然我想我可能转换 XML到JSON,然后序列化的方式,有没有更好的办法?
答
只要将适当的属性添加到类的字段中,就可以使用XmlSerializer
。 Check these out for an example of some。在你使用它的前几次,你肯定会遇到错误,但坚持下去,因为一旦你发现它,它是一个很好的工具。
编辑:
Here is a better place to find all of the available attributes。查看列表中的任何以Xml开头并以Attribute结尾的内容。你会想知道他们。
答
您可以使用xsd.exe从xml文件中提取模式并生成相应的c#类。您可以使用生成的类来序列化和反序列化xml。如果您显示代码,我们将能够更轻松地识别错误。