大型 xhtml 中的实体引用循环

Entity Reference Loop in large xhtml

我正在生成一个大型 Xhtml 文件。用记事本++打开文件时,它说我的文件中有一个实体引用循环。 该文件大约有 20K 行,并在以下行中给出这些错误:

<p class='tbl__description'>
&auml;rzaweqt;&auml;&ouml;&ocirc;
&eacute;&icirc;&Auml;&ecirc;&yuml;
&Ouml;&yen;&pound;&uacute; 
</p>

有人知道这个'XML parsing error on line ... - Detected an Entity Reference Loop'是什么意思吗? 当文件比较小的时候,好像不会弹出...只有当它包含很多这些Entity References的时候。

&name;事物是实体引用。

XML(以及带有它的 XHTML)功能过于全面,通常对您来说并不合适。

如“Is the Billion Laughs Attack supposed to be working in C#?”所示,您可以定义自己的实体并在其他实体定义中重用它们。我猜 XML 解析器会尝试检测这些漏洞并在解析实体时检查其内存使用情况。你的例子里有很多,但我没有看到循环。

看起来 notepad++ 使用了 TinyXml,也许您可​​以找出出现此错误的位置。

旁注:请参阅 Tom Eastman - Serialization formats are not toys - PyCon 2015 以了解更多序列化格式的功能示例,您可能会搬起石头砸自己的脚。

可能您的文档是以 ansi 编码保存的。您必须将其转换为 utf-8 以避免此错误。命名实体将根据您的实体定义解析为 utf-8 字符。某些 utf-8 字符必须改回实体才能以 ansi 编码保存。这就是禁循环!