使用
混合实体标签导致 XML 解析器异常
我使用 Java 和 Apache Xerces XML 解析器。该错误发生在 org.apache.xerces.parsers.DOMParser.parse 内部。
<content id="xxx">&<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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以将其放在
!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 />]]/>
您应该将文本放在 CDATA 中的标签之间:
或者以这种方式编写:
You should put text between tags in CDATA:
OR write it in this way: