将XML响应从WebService序列化为对象(C#)

时间:2010-05-14 11:33:41

标签: c# xml xml-deserialization

我正在调用REST Web服务。

响应看起来像这样:

<?xml version=\"1.0\" encoding=\"utf-8\"?>
<data>
  <status>1</status>
  <message>OK</message>
  <results>
    <result>
      <account>12345</account>
      <to>012345678</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; }
}

正如你所看到的,我忽略了一些返回的元素(闪存,替换等等)。

将返回的XML序列化到此对象的最佳方法是什么?

我尝试使用XmlSerializer,但这引发了一个错误...我猜是因为我没有先使用XmlSerializer进行序列化。

如果是Json,我会使用NewtonSoft.Json库...... 虽然我认为我可以将xml转换为json,然后以这种方式序列化,有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

只要将适当的属性添加到类的字段中,就可以使用XmlSerializerCheck these out for an example of some。毫无疑问,你在使用它的前几次会遇到错误,但坚持下去,因为一旦你弄明白,它就是一个很好的工具。

编辑:

Here is a better place to find all of the available attributes。在列表中查找以Xml开头并以Attribute结尾的任何内容。你会想知道所有这些。

答案 1 :(得分:0)

您可以使用xsd.exe从xml文件中提取架构并生成相应的c#类。您可以使用生成的类来序列化和反序列化xml。如果您显示代码,我们将能够更轻松地识别错误。