我正在向一个 XML 文档提供有关我需要解析的在线资源的元数据。不同的元数据项中有一组标签,这些标签以逗号分隔。这是一个例子:
<tags>Research skills, Searching, evaluating and referencing</tags>
问题是这些“标签”之一包含逗号。标签内的逗号已编码,但用于分隔标签的逗号则未编码。我(当前)正在使用getText() method on org.dom4j.Node读取<tags>
的文字内容元素,返回一个字符串。
问题是,据我所知,我无法区分我收到的字符串中编码的逗号(与未编码的逗号)。
除了编写自己的 XML 解析器之外,还有其他方法可以以更“原始”的状态访问此节点的文本内容吗? (即编码逗号仍然编码的状态。)
最佳答案
当您使用 dom4j 或 DOM 时,所有实体都已解析,因此您需要返回到解析步骤来捕获字符引用。
SAX 是一个更底层的接口(interface),并通过其 LexicalHandler 接口(interface)提供支持,以便在解析器遇到实体引用时获得通知,但它不报告字符引用。所以看来您确实需要编写一个自己的解析器,或者修补现有的解析器。
但最后,如果您可以更改文档的架构,那就最好了:
<tags>
<tag>Research skills</tag>
<tag>Searching, evaluating and referencing</tag>
</tags>
在当前文档中,字符引用用作元数据。 XML 元素是表达这一点的更好方式。
关于java - 在 XML 文档中,是否可以区分实体编码的字符和非实体编码的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33900677/