java - 在 XML 文档中,是否可以区分实体编码的字符和非实体编码的字符?

标签 java xml encoding dom4j

我正在向一个 XML 文档提供有关我需要解析的在线资源的元数据。不同的元数据项中有一组标签,这些标签以逗号分隔。这是一个例子:

<tags>Research skills, Searching&#44; 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/

相关文章:

java - 如何在rest get调用中传递参数列表(如电子商务中的过滤器对象)

iphone - NSRangeException 随机崩溃应用程序

Java Base64 Sun 到 JDK8

visual-studio-2010 - 如何在 Visual Studio 2010 中设置默认编码

java - Android Studio DatatypeFactoryImpl 未找到

java - 定位技术

Java错误: constructor cannot be applied to given types?

xml - JAXB 是否在内部使用 SAX 或 DOM?

xml - XQuery : most efficient way of for-iterating only when needed?

python - 如何在Charm中序列化/存储混合CPabe_BSW07加密的密文