如何接收网站生成的XML数据?

时间:2010-10-13 07:37:48

标签: .net xml api

有一些php API服务,当在查询字符串中发送一些参数时,它以xml格式返回日期。所以我想知道如何发送调用页面并在c#.net中返回结果。与xml阅读器或xml方案一样?

3 个答案:

答案 0 :(得分:4)

您可以将网址传递给XmlReader

using (var reader = XmlReader.Create("http://example.com/somexml"))
{
    // TODO: parse
}

另一种可能性是使用XDocument

var doc = XDocument.Load("http://example.com/somexml");
// TODO: manipulate the document

另一种可能性是使用WebClient

using (var client = new WebClient())
{
    string xml = client.DownloadString("http://example.com/somexml");
    // TODO: feed the xml to your favorite XML parser
}

答案 1 :(得分:3)

如果参数在查询字符串中,那很容易......我会根据Darin的答案使用XmlReader.Create,然后为了方便使用XML工作,我d使用LINQ to XML:

XDocument doc;
using (var reader = XmlReader.Create("http://example.com/somexml"))
{
    doc = XDocument.Load(reader);
}
// Now work with doc

(编辑:正如Darin所说,XDocument.Load(string uri)使这更简单 - 忽略了文档说它从文件加载数据的事实。)

如果您需要更多地控制HTTP方面(例如包含帖子数据),您可以使用以下内容:

WebRequest request = WebRequest.Create(...);
// Fiddle with request here

XDocument doc;
using (WebResponse response = request.GetResponse())
using (Stream data = response.GetResponseStream())
{
    doc.Load(data);
}
// Use doc here

请注意,这都是同步的 - 也可以异步解析所有这些,但更多的工作。

答案 2 :(得分:0)

更好的方法是

XmlDocument xdoc;
xdoc = new XmlDocument();
xdoc.Load(XmlReader.Create("weblink"));

无法分析XDocument并提取其在XmlDocument中可能的XML值