28
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.XmlResolver = null;

    xmldoc.Load("URL");
    XmlWriter xmlWrite = XmlWriter.Create(@Server.MapPath("Test.xml"));
    xmldoc.Save(xmlWrite);
    xmlWrite.Close();

以上是我用来读取 XML 文件的代码。我正在加载的 XML 包含类似的实体nbsp;,因此,代码抛出了 XMLException:

引用未声明的实体“nbsp”

4

3 回答 3

58

有两种方法可以处理此问题,但对于这两种方法,您都需要对输入文件进行更改。

1)在您的输入文件中更改您 的。 使用 Unicode 并避免 XML 文档中的可读实体总是更好。使用纯 Unicode 字符或其数字形式。

2)如果您仍然需要/想要使用  您可以在文件中声明一个自定义文档类型,它将为您进行转换:

<!DOCTYPE doctypeName [
   <!ENTITY nbsp "&#160;">
]> 

出现此问题是因为&nbsp;它不是 XML 预定义实体之一。

于 2013-03-29T11:10:12.370 回答
8

我今天遇到了同样的问题,我可以通过将 HTML entity name 更改为 HTML entity number来解决它。

根据这个有用的论坛帖子,我能够修复此错误。

HTML 实体名称在 XML 中没有得到很好的支持。这就是为什么“不间断空间”——“nbsp”——会触发这个令人沮丧的错误。

解决此问题的最简单方法是使用 HTML 实体编号,这意味着更改&nbsp;&#160;.

有关带有名称和编号的 HTML 实体的完整列表,请参阅:

W3 School 的 HTML 实体参考页面

关于实体集的官方 W3C 页面

于 2013-06-25T16:38:17.913 回答
0

迟到了,但是如果您不想记住是什么意思,也可以&nbsp替换为。&amp;nbsp;&#160;

于 2020-03-12T18:28:41.557 回答