当前位置:  开发笔记 > 编程语言 > 正文

使用XML时引用未声明的实体异常

如何解决《使用XML时引用未声明的实体异常》经验,为你挑选了4个好方法。

我试图设置xmldoc的innerxml但得到异常:引用未声明的实体

XmlDocument xmldoc = new XmlDocument();
string text = "Hello, I am text α   – —"
xmldoc.InnerXml = "

" + text + "

";

这引发了异常:

引用未声明的实体'alpha'.2号线,2号线..

我该如何解决这个问题?



1> Stephan Lecl..:

与HTML不同,XML不定义实体(即对UNICODE字符的命名引用),因此α &MDASH; 等不会转换为相应的字符.您必须使用数值.你只能使用< 和& 在XML中

如果要创建HTML,请改用HtmlDocument.


HtmlDocument来自System.Windows.Forms命名空间http://j.mp/pSmv82如果您不喜欢它与WebBrowser控件的紧密关联或者导致应用程序出现问题,则可以通过HTML Agility获得纯HTML解析器包http://htmlagilitypack.codeplex.com/wikipage?title=Examples

2> LandedGently..:

在.Net中,您可以使用以下System.Xml.XmlConvert类:

string text = XmlConvert.EncodeName("Hello α");

或者,您可以通过在DOCTYPE声明中将方括号之间的声明放在本地来声明实体.将以下标头添加到xml:




]>

在"html字符实体"上为实体定义做一个google.



3> FlySwat..:

尝试替换&Alpha

  Α



4> Fernando Mig..:

前面的答案是对的.另一种方法是将您的html文档链接到定义了这些字符实体的DTD,这是标准的XHTML DTD定义.您的xml文件应包含以下声明:

 

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有