我有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
已替换为文件内容。
答案 0 :(得分:1)
扩展DefaultHandler
和@Overwrite
resolveEntity
方法。您的实现将只打印或记录publicId / systemId并返回null
,因此SAXParser
将使用默认行为来解析实体。
将DefaultHandler
子类与SAXParser
构造函数一起传递。