2009-04-29 39 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部分)。