2010-05-12 65 views
1

,我發現了錯誤:更多XML問題 - 聲明實體 'NBSP'

Line 49: xml = r.ReadToEnd(); Line 50: Line 51: System.Xml.Linq.XDocument xmlDoc = System.Xml.Linq.XDocument.Parse(xml); Line 52:
Line 53: var query = from p in xmlDoc.Descendants("member")

在我的XML。當我運行代碼在空白頁面中生成XML時,它運行時沒有錯誤,如果我在網頁中調用代碼,則會引發此錯誤。頁面上唯一的「NBSP」是一個doctype聲明在XSLT的頂部:

<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]> 

我不知所措到這個錯誤是來自和我期待的建議,請!

謝謝。

下面是C#代碼中的XML拉:

protected void exportList(Object sender, EventArgs e) 
    { 
     String gid; 
     gid = Request.QueryString["gid"].ToString(); 
     //XElement xml = XElement.Load("/members/listmembersxmlfeed?gid=" + gid); 

     String xml = String.Empty; 

     System.Net.WebResponse WR = System.Net.WebRequest.Create(Request.Url + "/members/listmembersxmlfeed?gid=" + gid).GetResponse(); 

     System.IO.StreamReader r = new System.IO.StreamReader(WR.GetResponseStream()); 
     xml = r.ReadToEnd(); 

     System.Xml.Linq.XDocument xmlDoc = System.Xml.Linq.XDocument.Parse(xml); 

      var query = from p in xmlDoc.Descendants("member") 
        select new 
        { 
         Name = p.Element("name").Value, 
         Email = p.Element("email").Value 
        }; 

      foreach (var member in query) 
      { 
        Response.Write("Employee: " + member.Name + " " + member.Email + "<br />"); 
      } 
    } 

希望這有助於。

+0

什麼是實際錯誤 - 您已經顯示了C#堆棧跟蹤,但實際XML錯誤的措辭應該包含XML中的行號 – Mark 2010-05-12 08:44:53

+0

您能否提供完整的錯誤文本?可能是,也是全部xml – VMAtm 2010-05-12 08:50:56

+0

你的意思是這行Mark? 「System.Xml.XmlException:引用未聲明的實體'nbsp',行113,位置18。 – DarrylGodden 2010-05-12 08:53:37

回答

-2

將WebRequest.Create更改爲靜態URL而不是Request.Uri +「/listmembersxmlfeed?gid =」+ gid,解決了這個問題。

+0

有趣的是爲什麼這是-2作爲這是答案?或者我需要在主持人論壇上提問? – DarrylGodden 2015-01-19 15:14:07

8

您的XML文檔必須有一個DTD聲明@nbsp;實體

<!DOCTYPE topElementName [ <!ENTITY nbsp "&#x00A0;"> ]> 

否則,文本是不是簡潔(wellformed)的XML文檔(containes未定義的實體),該錯誤消息告訴你。

XSLT樣式表具有此聲明的事實僅適用於XSLT樣式表。對於XML文檔,這種聲明也是單獨需要的,