我构建了一个包含 DTD 文件的 jar。我想在外部应用程序中使用此 jar,其中 DTD 文件将用于 XML 文件。
我的问题是如何使我的 dtd 文件(在 .jar 文件中)可以从 xml 访问?
正如我们在 struts hibernate 等其他配置文件中所做的那样,我们在包含在 .jar 文件中的 xml 中定义 DTD。我想在我的 jar 文件中做同样的事情,但无法弄清楚方法,请帮忙。
最佳答案
您可以实现一个org.xml.sax.EntityResolver
public class MyResolver implements EntityResolver {
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
if (systemId.contains("my.dtd")) {
InputStream myDtdRes = getClass().getResourceAsStream("/com/yourcompany/my.dtd");
return new InputSource(myDtdRes);
} else {
return null;
}
}
}
并将其与您的 DocumentBuilder.setEntityResolver()
一起使用
DocumentBuilder docBuilder = ...
docBuilder.setEntityResolver(new MyResolver());
关于java - 在包中放置 DTD 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28614248/