我正在尝试加载文档,请参阅下面的代码
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"
答案 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)
要么足够好,要让你更近一步。