如何从Web响应中读取xml?

时间:2014-09-23 15:03:08

标签: c# asp.net xml 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>

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;

        }

PageLoad调用

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

    }

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

1 个答案:

答案 0 :(得分:4)

当前问题(您看到System.Xml.XmlElement的原因)是您在ToString上调用XmlElement,但不会覆盖该方法。您可能希望改为使用InnerXmlOuterXml属性:

XmlNode elem = xmlDoc.DocumentElement.FirstChild;
return elem.OuterXml;

这将返回第一个孩子的整个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;