C# 如何解析REST服务响应?

C# 如何解析REST服务响应?,c#,wpf,wcf,rest,wcf-rest,C#,Wpf,Wcf,Rest,Wcf Rest,我已经设置了休息服务,效果很好。这是我从服务中得到的响应,如图所示: 如何在我的WPF应用程序中解析这种类型的请求?嗯,有很多方法。您可以使用,将其加载到,等等 前一个选项公开了一个接受输入流和XmlReaderSettings实例的构造函数 但是这个响应是如何返回的呢?如果您向我们展示了一些代码,或者提供了更多的信息,那么您可能会发现我们有更合适的不同方法。您的回答似乎是一个包含发布者信息的XML结构。至于解析它,您有很多选择,但是所有这些都需要/更希望您拥有结果XML的模式 使用Visua

我已经设置了休息服务,效果很好。这是我从服务中得到的响应,如图所示:


如何在我的WPF应用程序中解析这种类型的请求?

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

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


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

您的回答似乎是一个包含发布者信息的XML结构。至于解析它,您有很多选择,但是所有这些都需要/更希望您拥有结果XML的模式

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

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

    PublisherInfo pi = myServiceClient.GetPublisherInfo();
    

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

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


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

    您的意思是我需要手动解析Xml并牺牲强类型语言的所有好处?我希望在对象具有属性和变量的情况下,以更面向对象的方式进行响应。这种解析方法非常繁琐且容易出错。我同意,但如果您有与此数据相关的强类型类,那么我认为您应该知道,因此提到了它。正如我所说的,如果您提供更多信息,或者一些代码,我们可能会根据需要帮助您。出版商基本上是一个实体。我正在使用EntityFramework v4.1。这有用吗?或者我应该向您提供此代码?我正在使用REST服务。我真的不知道您可以添加RESTful服务的服务引用,也可以添加普通WCF和asmx服务。非常感谢。谢谢。我想选择选项1。您能告诉我如何使用VisualStudioXSD工具吗?另外,我们真的可以向Restful服务(也像普通的asmx和WCF服务)添加服务引用吗?如果是这样,那么类将由VS2010:)创建,因此我不必担心。服务引用解决方案取决于服务实现,如果它类似于“string DoSomething(…)”并且字符串返回是XML,那么您就不会拥有这些类。如果实现类似于“PublishInfo DoSomething(…)”,那么它就会。对于xsd工具,这是VS安装的一部分,可以通过VS命令提示符执行,例如xsd工具的xsd/c myschema.xsdInstall路径:c:\Program Files\Microsoft SDK\Windows\v7.0A\bin