我在使用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对象中获得整个响应的最佳方法是什么?
答案 0 :(得分:1)
虽然这并不能解决实际问题,但可以帮助您实现在下载的XML上使用LINQ-to-XML的目标。
使用XmlReader
并不是运行LINQ-to-XML的唯一方法。鉴于您能够在字符串变量str
中获取完整的XML,您可以使用XElement.Parse()
或XDocument.Parse()
方法将字符串加载到LINQ-to-XML&#39 ; s XElement
或XDocument
对象:
.....
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
.....