代码之家  ›  专栏  ›  技术社区  ›  Michael Pryor

如何从C#中的XML web服务中获取值?

  •  4
  • Michael Pryor  · 技术社区  · 18 年前

    在C#中,如果我需要打开HTTP连接,下载XML并从结果中获取一个值,我将如何做到这一点?

    为了保持一致性,假设webservice位于www.webservice.com,如果您传递POST参数fXML=1,它会返回给您

    <xml><somekey>somevalue</somekey></xml>
    

    我想让它吐出“somevalue”。

    4 回复  |  直到 13 年前
        1
  •  4
  •   Jon Limjap    18 年前

    我认为首先阅读以下内容会很有用:

    Creating and Consuming a Web Service (in.NET)

        2
  •  3
  •   travis    18 年前

    我使用这段代码,效果非常好:

    System.Xml.XmlDocument xd = new System.Xml.XmlDocument;
    xd.Load("http://www.webservice.com/webservice?fXML=1");
    string xPath = "/xml/somekey";
    // this node's inner text contains "somevalue"
    return xd.SelectSingleNode(xPath).InnerText;
    

    编辑:我刚刚意识到你说的是Web服务,而不仅仅是普通的XML。在VisualStudio解决方案中,尝试右键单击解决方案资源管理器中的引用,然后选择“添加Web引用”。将出现一个对话框,询问URL,您可以将其粘贴到: http://www.webservice.com/webservice.asmx “.VS将自动生成您所需的所有帮助程序。然后您只需调用:

    com.webservice.www.WebService ws = new com.webservice.www.WebService();
    // this assumes your web method takes in the fXML as an integer attribute
    return ws.SomeWebMethod(1);
    
        3
  •  2
  •   aku    18 年前

    您可以使用类似的方法:

    var client = new WebClient();
    var response = client.UploadValues("www.webservice.com", "POST", new NameValueCollection {{"fXML", "1"}});
    using (var reader = new StringReader(Encoding.UTF8.GetString(response)))
    {
        var xml = XElement.Load(reader);
        var value = xml.Element("somekey").Value;
        Console.WriteLine("Some value: " + value);                
    }
    

        4
  •  0
  •   Rob Cooper    18 年前

    还值得补充的是,如果您需要专门使用POST而不是SOAP,那么您可以配置web服务来接收POST调用:

    Configuration Options for XML Web Services Created Using ASP.NET