如何从Web响应中读取XML?

use*_*072 1 c# xml asp.net web-services

我正在尝试从 Web 响应中读取 xml 并从中获取选定的节点(即链接)。这是我到目前为止所拥有的,它显示“System.Xml.XmlElement”作为输出。

WRequest 方法,使用 Web 请求向 url 发送 POST 请求,并返回字符串 xml 响应,例如:

<status> <code>201</code>
<resources_created>
<link href="####" rel="############" title="####" /> 
</resources_created> 
<warnings> <warning>display_date is read-only</warning> </warnings> 
</status>
Run Code Online (Sandbox Code Playgroud)

ReadUri2方法

public static string readUri2()
    {
        string uri = "";
        string xml = WRequest();

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xml);

        XmlNode elem = xmlDoc.DocumentElement.FirstChild;
        uri = elem.ToString();
        return uri;

        }
Run Code Online (Sandbox Code Playgroud)

页面加载调用

 protected void Page_Load(object sender, EventArgs e)
    {
        string uri = readUri2();
        Label1.Text = Server.HtmlEncode(uri);

    }
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激。非常感谢。

Jon*_*eet 5

直接的问题(您看到的原因System.Xml.XmlElement)是您正在调用ToString一个XmlElement,它不会覆盖该方法。您可能想使用InnerXmlOuterXml属性来代替:

XmlNode elem = xmlDoc.DocumentElement.FirstChild;
return elem.OuterXml;
Run Code Online (Sandbox Code Playgroud)

这将返回第一个子级的整个 XML,即code. 接下来,您需要更改要查找的元素,并获取正确的属性。

附带说明一下,我强烈建议使用 LINQ to XML - 它通常是更好的 XML API。例如:

// TODO: Rename the `WRequest` method; that's horrible.
var document = XDocument.Parse(WRequest());
var href = document.Descendants("link").Single().Attribute("href").Value;
Run Code Online (Sandbox Code Playgroud)