我正在尝试从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);
}
非常感谢任何帮助。非常感谢。
答案 0 :(得分:4)
当前问题(您看到System.Xml.XmlElement
的原因)是您在ToString
上调用XmlElement
,但不会覆盖该方法。您可能希望改为使用InnerXml
或OuterXml
属性:
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;