我收到了错误:
第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 " "> ]>
我不知道这个错误来自哪里,我正在寻找建议!
感谢。
以下是提取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 />");
}
}
希望得到这个帮助。
答案 0 :(得分:8)
您的XML文档必须有一个DTD声明@nbsp;实体强>:
<!DOCTYPE topElementName [ <!ENTITY nbsp " "> ]>
否则,文本不是格式良好的XML文档(包含未定义的实体),错误消息告诉您。
XSLT样式表具有此声明的事实仅适用于XSLT样式表。 XML文档
也需要单独声明答案 1 :(得分:-2)
将WebRequest.Create更改为静态URL而不是Request.Uri +“/ listmembersxmlfeed?gid =”+ gid,这解决了它。