2010-05-12 41 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文档,这种声明也是单独需要的,