Xdocument.Load(XMLReader.Read())给我错误

时间:2012-03-08 18:22:44

标签: asp.net xml linq

我正在尝试加载文档,请参阅下面的代码

 try
        {
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                XmlReader responseReader = XmlReader.Create(response.GetResponseStream());

                XDocument docs = XDocument.Load(responseReader.Read());

上面一行告诉我xdocument.Load有一些无效的参数。

                //XDocument docs = XDocument.Load(response.GetResponseStream());

这一行没有加载Docs为空的任何内容

               XDocument docs = XDocument.Load(responseReader);

这一行没有给出任何重载错误,但没有返回任何内容。

List<string> books = docs.Descendants("Test")....."Remaining QQuery"

2 个答案:

答案 0 :(得分:2)

更改

XDocument docs = XDocument.Load(responseReader.Read());

XDocument docs = XDocument.Load(responseReader);

XDocument的方法将接受一个XmlReader,它就是responseReader,但是你调用的是.Read()方法,只返回一个布尔值,这就是你得到错误的原因。

答案 1 :(得分:1)

首先,你几乎没有XmlReader;你不能直接将响应加载到XDocument中,但是,大多数时候你可以这样做:

XDocument docs = XDocument.Load(new StreamReader(response.GetResponseStream()));

然后检查docs.Nodes.Count。

如果文档仍为空,则应该查看响应本身。看看response.ContentType - 它是什么?

假设响应不是太大,请看一下!你可以这样做:

StreamReader reader = new StreamReader(response.GetResponseSteam()); string text = reader.ReadToEnd();

您可以将该字符串转储到任何位置。或者,如果它非常大,您可以使用带有响应的FileStream将响应保存到磁盘,或者更简单地WebClient.DownloadFile(url, path_to_save)

要么足够好,要让你更近一步。