StreamReader并读取XML文件

Bad*_*ari 10 .net c# xml streamreader

我从使用StreamReader的Web服务器得到响应...现在我想解析这个响应(它是一个XML文档文件)来获取它的值,但每次我尝试这样做时都会收到一个错误:缺少根元素.

如果我直接读取相同的XML文件,文件格式正确,我可以读取它.

这是流:

WebResponse response = webRequest.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader responseReader = new StreamReader(responseStream);
string responseString = responseReader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)

这就是我尝试读取XML文件的方式:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(responseReader);
XmlNodeList address = xmlDoc.GetElementsByTagName("original");
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 18

您已调用ReadToEnd(),因此消耗了所有数据(转换为字符串).这意味着读者无需再给予.只是:不要那样做.或者,这样做并使用LoadXml(reaponseString).


Dar*_*rov 6

负载方法能够从远程资源获取XML文档.所以你可以像这样简化你的代码:

var xmlDoc = new XmlDocument();
xmlDoc.Load("http://example.com/foo.xml");
var address = xmlDoc.GetElementsByTagName("original");
Run Code Online (Sandbox Code Playgroud)

不需要任何WebRequests,WebResponses,StreamReaders,......(顺便说一句,你没有妥善处理).如果这不起作用,可能是因为远程XML文档不是真正的XML文档而且它已被破坏.