如何从Web响应中读取xml?
问题描述:
我想从web响应中读取xml,并从中获取选定的节点(即链接)。这是我迄今为止的内容,并且显示了“System.Xml.XmlElement”作为输出。如何从Web响应中读取xml?
WRequest方法,发送POST请求使用网络请求URL并返回一个字符串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);
}
任何帮助将非常感激。非常感谢。
答
立即出现的问题(您看到的原因System.Xml.XmlElement
)是您在XmlElement
上调用ToString
,它不覆盖该方法。你可能想使用InnerXml
或OuterXml
属性,而不是:
XmlNode elem = xmlDoc.DocumentElement.FirstChild;
return elem.OuterXml;
这就是全部退回了第一个孩子,这是code
的XML的。接下来,您需要更改要查找的元素,并获取正确的属性。作为一个侧面说明,我强烈建议使用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;
+0
谢谢你对我错误出现的地方的全面解释。非常感谢您的帮助。 – user3070072 2014-09-23 15:18:52
@CodeCaster:以什么方式重复?它如何解释为什么OP将'System.Xml.XmlElement'看作输出? – 2014-09-23 15:08:59
@你说得对,OP的问题是_“当我调用'.ToString()'”_时,为什么会看到类型名称。他们想要回答的问题是一个不同的问题,即我所链接的问题:_“如何选择特定的XML节点或属性值”_。 – CodeCaster 2014-09-23 15:12:10
@CodeCaster:是的,但我认为一步一步去做是很重要的......我不认为这是一个重复的问题,我认为这是有用的。 – 2014-09-23 15:13:05