我对 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/