Java 和 XML : How to get list of included files

标签 java xml xinclude xml-entities

我对 Xinclude 或作为实体包含的文件有疑问。我需要知道解析器已包含哪些文件。示例:

<?xml version="1.0" ?>
<!DOCTYPE docBookChapter [
    <!ENTITY externalFile SYSTEM "entityIncluded.xml">
]>
<chapter xmlns="http://www.w3.org/1999/xhtml"
xmlns:xi="http://www.w3.org/2001/XInclude">
    <title>Third chapter</title>
    <xi:include href="xIncluded.xml"/>
    <chapter>
        &externalFile;</chapter>
</chapter>
解析器成功创建了 DOM,但是如何获取包含的文件名呢?元素 xi:include 已替换为文件内容。

最佳答案

扩展DefaultHandler@Overwrite resolveEntity 方法。您的实现将简单地打印或记录 publicId/systemId 并返回 null,因此 SAXParser 将使用默认行为来解析实体。

使用 SAXParser 构造函数传递您的 DefaultHandler 子类。

关于Java 和 XML : How to get list of included files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6646961/

相关文章:

java - 多态性、自动装箱和隐式转换

java - 在 java 对象中存储版本号

xml - 带有根元素中属性的 xml 的 xsl 不起作用

xml - XPath - 选择除具有给定属性的元素(及其子元素)之外的所有元素

Java BlockingQueue 消息线程之间的滞后问题

java - 如何拒绝字符串和 double 输入?

java - 使用 xquery 从我的 xml 文档中检索时出错

java - 无法使用 java 加载 xml,因为我需要它(初学者)

xml - 使用 XIncludes 解开一组 XML 文件的依赖关系树

java - 在 XSLT 中,如果 xinclude 包含某个元素的 xml 文件,如何获取该 xml 文件的文件路径?