【问题标题】:Entity Reference Loop in large xhtml大型 xhtml 中的实体引用循环
【发布时间】:2015-06-01 16:22:56
【问题描述】:

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

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

有谁知道“在线 XML 解析错误... - 检测到实体引用循环”是什么意思? 当文件较小时,它似乎不会弹出......只有当它包含很多这些Entity References时。

【问题讨论】:

    标签: html xml xml-parsing notepad++


    【解决方案1】:

    &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,了解更多序列化格式的功能示例,您可能会使用这些示例来打自己的脚。

    【讨论】:

    • 循环会是什么样子?您将创建一个自定义实体引用,该引用又引用其他内容或什么?
    • 谢谢,这就是我要找的:)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-22
      • 2012-04-04
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多