我该如何解析REST服务响应?

时间:2011-07-26 08:58:48

标签: c# wpf wcf rest wcf-rest

我已经设置了我的REST服务,它运行正常。这是我从服务中获得的响应如图所示:

enter image description here

如何在WPF应用程序中解析此类请求?

3 个答案:

答案 0 :(得分:1)

嗯,有很多方法。您可以使用XmlReader,将其加载到XmlDocument等等。

这些选项的前者公开了一个接受输入流和XmlReaderSettings实例的构造函数。

但是这个回复怎么回事?如果您向我们展示了一些代码,或者提供了更多信息,那么您可能会发现我们有更合适的不同方法。

答案 1 :(得分:1)

您的响应似乎是一个包含发布者信息的XML结构。至于解析它你有很多选择,但是所有这些都需要/更喜欢你拥有生成XML的模式。

  1. 使用Visual Studio XSD工具在项目中创建架构类。一旦有了这些,就可以将XML反序列化为一个对象。然后,您可以在WPF应用程序中使用该对象。
  2. 使用XmlDocument加载XML,然后使用xPath查询提取所需的数据。
  3. 使用XDocument(linq to XML)加载XML,然后使用LINQ样式查询来提取所需的数据。
  4. 就个人而言,我会使用选项1 - 它确实需要一个模式(其他选项在技术上并不需要)但它确实为您提供了比xpath / linq查询更容易维护和使用的对象。

    还值得一提的是,根据服务引用如何添加到客户端(以及服务如何公开自身),您可能已将此XML类绑定到客户端服务引用中。作为示例,客户端中的服务引用可以允许您执行此操作:

    PublisherInfo pi = myServiceClient.GetPublisherInfo();
    

    在这种情况下,将为您处理从XML到PublisherInfo的所有转换。我猜测上面的示例XML是通过在浏览器中调用服务获得的,因此转换为PublisherInfo显然不会发生,因为这会在客户端代码中发生。

答案 2 :(得分:1)

为什么需要解析它,为什么在将服务引用添加到WPF项目时不使用Visual Studio生成的类?

如果你真的想要解析它,请使用其他答案中提到的Xml库