.net XmlDocument.load()的根元素缺失错误

时间:2009-04-29 18:21:42

标签: xml xmldocument xmltextreader

问候所有人。

当我将REST请求的结果加载到XmlDocument中时,我收到了一个asp.net错误“Root元素缺失”。当我使用Firefox插件“RESTTEST”执行它时,相同的REST请求看起来很好并返回有效结果。但是错误出现在C#.net代码隐藏中。有谁知道这会导致什么?以下是相关代码:

HttpWebResponse response = null;
response = (HttpWebResponse)request.GetResponse();
HttpStatusCode statusCode = response.StatusCode;
Stream responseData = response.GetResponseStream();
StreamReader sr = new StreamReader(responseData);
XmlTextReader reader = new XmlTextReader(sr);
XmlDocument doc = new XmlDocument();
doc.Load(sr); // here is where the error occurs.

我的目标是将REST请求的结果加载到可遍历的XML数据模型中,然后我可以从中获取元素及其值。

当我使用此代码时,我得到了预期的结果。有什么区别?

while (reader.Read())
{
  switch (reader.NodeType)
  {
    case XmlNodeType.Element: // The node is an Element.
      Response.Write("Element Name: " + reader.Name);
      while (reader.MoveToNextAttribute()) // Read attributes.
      Response.Write(" " + reader.Name + "='" + reader.Value + "'");
      Response.Write("<br />");
      break;
    case XmlNodeType.Text: //Display the text in each element.
      Response.Write("Element value: " + reader.Value);
      Response.Write("Read key=" + reader.Name + ", value=" + reader.Value + "<br/>");
      break;
    case XmlNodeType.EndElement: //Display end of element.
      Response.Write("<br />");
      break;
    }
  }

2 个答案:

答案 0 :(得分:1)

看起来XML是一个片段而不是一个完整形成的XML文档 - 这就是它没有根的原因。要使其工作,您必须配置XMLDocument对象以接受片段...

答案 1 :(得分:0)

尝试使用sr.ReadToEnd()查看返回给您的内容。它可能是一个空字符串。

此外,如果您使用的是.NET 2.0或更高版本,则应使用XmlReader.Create; {@ 1}}已被弃用。

有关使用XML序列化的示例,请参阅A REST Client Library for .NET, Part 1。 (对不起,没有第2部分。)