如何使用HttpWebResponse设置XmlReader

时间:2014-08-22 23:48:44

标签: c# xml linq xmlreader httpwebresponse

我在使用HttpWebResponse并将其设置为XmlReader时遇到了问题,到目前为止我已经查到了示例我已经得到了这个:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
XmlReader xmlReader;
if (response != null)
{
    StreamReader sr = new StreamReader(response.GetResponseStream());
    //string st = sr.ReadToEnd().Trim();
    xmlReader = XmlReader.Create(sr);
}

但问题是xmlReader没有填满整个响应,我得到的部分响应甚至不是有效的XML(某些节点上没有结束标记),这会在以后尝试读取该变量时导致问题

但如果我取消注释以下行进行测试:

string str = sr.ReadtoEnd().Trim();

变量str填充了整个XML响应,但显然我需要它以XmlReader的形式,所以我可以在其上运行LINQ to XML。

我的问题是,确保在XmlReader对象中获得整个响应的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

虽然这并不能解决实际问题,但可以帮助您实现在下载的XML上使用LINQ-to-XML的目标。

使用XmlReader并不是运行LINQ-to-XML的唯一方法。鉴于您能够在字符串变量str中获取完整的XML,您可以使用XElement.Parse()XDocument.Parse()方法将字符串加载到LINQ-to-XML&#39 ; s XElementXDocument对象:

.....
StreamReader sr = new StreamReader(response.GetResponseStream());
string str = sr.ReadToEnd().Trim();
XDocument doc = XDocument.Parse(str);
//at this point you can continue doing necessary LINQ-to-XML operations
.....