我正在像这样在 JAVA 中读取 XML 文件:
String filepath = xmlFile;
File workFile = new File(filepath);
File fragmentDir = workFile.getParentFile();
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(filepath);
在这个 xml 文件中有像 &testRef; 这样的引用。
我有另一个文件,我在其中声明了所有这样的实体:
<!ENTITY testRef 'hello"'>
简单的解决方案是直接在 xml 文件中添加这些引用或添加一个!ENTITY 系统“file.ref”,但我不能。有没有可以告诉我的 DocumentBuilderFactory 的解决方案:使用此文件来阅读参考资料?
编辑:我试过这个:
docBuilder.setEntityResolver(new EntityResolver() {
public InputSource resolveEntity(String publicId, String systemId) throws SAXException,IOException {
System.out.println("Resolving");
return new InputSource("file.ref");
}
});
但是我不断收到“引用了实体“testRef”,但没有声明......”,甚至没有打印文本“Resolving”。似乎文档构建器没有考虑到新的解析器。
我错过了什么?