2009-04-29 970 views
0

大家好。缺少根元素错误.NET XMLDocument.load方法()

我得到一个asp.net错误“缺少根元素”当我一个REST请求的结果加载到如下。同样的REST请求看起来很好,并返回,当我使用Firefox插件“RESTTEST”执行它有效的结果。但是在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; 
    } 
    } 
+0

你能张贴你从REST测试回来,所以我们可以眼球的XML。 – 2009-04-29 18:24:32

回答

1

它看起来像XML是一个片段,而不是完全形成的XML document--这就是为什么它没有根。为了得到这个工作,你必须配置XMLDocument对象接受碎片......

0

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

此外,你应该如果你使用.NET 2.0或以上使用XmlReader.Create; XmlTextReader已弃用。

为使用XML序列化的例子见A REST Client Library for .NET, Part 1。 (对不起,没有第2部分)。