更多XML问题 - 未申报实体'nbsp'

Dar*_*den 1 c# xml xslt

我收到错误:

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

在我的XML上.当我运行代码在空页面中生成XML时,它运行没有错误,如果我在我的网页中调用代码它会抛出此错误.页面上唯一的'nbsp'是XSLT顶部的doctype声明:

<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>
Run Code Online (Sandbox Code Playgroud)

我不知道这个错误来自哪里,我正在寻找建议!

谢谢.

这是引入XML的C#代码:

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 />");
            }
    }
Run Code Online (Sandbox Code Playgroud)

希望这有帮助.

Dim*_*hev 8

您的XML文档必须有一个DTD声明@nbsp; 实体:

<!DOCTYPE topElementName [ <!ENTITY nbsp "&#x00A0;"> ]> 
Run Code Online (Sandbox Code Playgroud)

否则,文本不是一个格式良好的XML文档(包含未定义的实体),错误消息告诉您.

XSLT样式表具有此声明的事实仅适用于XSLT样式表.XML文档也需要单独声明,