使用
混合实体标签导致 XML 解析器异常

发布于 2025-01-05 21:03:04 字数 512 浏览 0 评论 0原文

我使用 Java 和 Apache Xerces XML 解析器。该错误发生在 org.apache.xerces.parsers.DOMParser.parse 内部。

<content id="xxx">&amp;<br /></content>

如果像这样的行出现在我想要解析的 XML 文档中,则解析器会崩溃并返回以下错误消息:

org.xml.sax.SAXParseException: The entity name must immediately follow the '&' in the entity reference.

我可以将问题的根源缩小到
< 的出现/code>,因为如果我省略它但无法理解导致破损的原因,它会很好地工作。 & 符号已正确转义,并且不应以任何方式干扰
作为 HTML 行分隔符的出现。

I use Java and the Apache Xerces XML parser. The error occurs inside org.apache.xerces.parsers.DOMParser.parse.

<content id="xxx">&<br /></content>

If a line like this appears in an XML document I'd like to parse, the parser crashes and returns the following error message:

org.xml.sax.SAXParseException: The entity name must immediately follow the '&' in the entity reference.

I could narrow the source of the problem down to the appearance of <br />, as it works well if I omit it but fail to understand what causes the breakage. The ampersand is correctly escaped and should not in any way interfere with the occurrence of <br /> as a HTML line separator.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

贩梦商人 2025-01-12 21:03:04

您可以将其放在 !CDATA 下,如下所示。如果这就是您所追求的,这将使它不会被 XML 解析器解析。您可以在此处了解有关 CDATA 部分的更多信息。

&]]/>

You can put it under !CDATA like this. This will make it not parsed by the XML parser if that's what you are after. You can read more about CDATA section here.

<content id="xxx">&<![CDATA[<br />]]/>

给我一枪 2025-01-12 21:03:04

您应该将文本放在 CDATA 中的标签之间:

<content id="xxx"><![CDATA[& <br />]]></content>

或者以这种方式编写:

<content id="xxx">& <br /></content>

You should put text between tags in CDATA:

<content id="xxx"><![CDATA[& <br />]]></content>

OR write it in this way:

<content id="xxx">& <br /></content>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文