我如何请求xml页面并解析它而不实际加载它
本文关键字:加载 不实际 何请求 请求 xml | 更新日期: 2023-09-27 18:08:06
从我的。aspx页面内,我试图使一个请求的xml页面是在网络上,并返回其中一个节点的值。所讨论的页面将是一个服务,它接受查询字符串并将结果输出到我自己的aspx页面。
为了学习的目的,虽然我只是想做一个简单的例子。我找到了这个页面:http://www.w3schools.com/xml/note.xml我想做的是有一个按钮,当点击将显示到一个文本框<身体> & lt;/身体>节点?身体>
我一直在尝试用WebClient类做这件事,但我不确定这是否是正确的方法。我一直遵循这个例子http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=33798,但我遇到例外(407)代理认证要求。
您可以像这样使用LINQ to XML来加载XML并检索您想要的元素:
XDocument document = XDocument.Load("http://www.w3schools.com/xml/note.xml");
string xml = document.Root.ToString();
使用您的示例(http://www.w3schools.com/xml/note.xml),上面将输出以下内容:
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
希望对你有帮助。
编辑(基于注释)
如果您位于代理服务器后面,并且设置了默认凭据,您可以尝试以下操作(未经测试,因为不是在代理服务器后面):
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create("http://www.w3schools.com/xml/note.xml");
webRequest.Proxy = WebRequest.DefaultWebProxy;
using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
{
using (StreamReader streamReader = new StreamReader(webResponse.GetResponseStream()))
{
XDocument document = XDocument.Load(new StringReader(streamReader.ReadToEnd()));
string xml = document.Root.ToString();
MessageBox.Show(xml);
}
}
注意
(来自MSDN WebRequest。DefaultWebProxy财产)
DefaultWebProxy属性从app.config中读取代理设置文件。如果没有配置文件,则为当前用户的ie浏览器(IE)代理设置被使用
我认为您可以像这样将XML加载到xmldataddocument中:
XmlDataDocument xmlDoc = new XmlDataDocument();
xmlDoc.Load("http://mydomain.com/exportsearch?param=SearchText");
一旦您在文档中有了XML,查询它应该是相当容易的。