实际上我有一个java程序,它从特定的XML文件中读取数据。 现在我想为该程序创建一个jar文件,并且还包含相应的DTD,这样任何使用我的JAR的人都可以根据该DTD检查其XML。
请提前帮助,谢谢!
答案 0 :(得分:1)
您需要创建一个Resolver类,它将您的DTD的公共或系统ID解析为您在jar中打包的DTD的副本。
DocumentBuilderFactory factory = xmlFactories.newDocumentBuilderFactory();
factory.setNamespaceAware(true);
factory.setValidating(false);
DocumentBuilder documentBuilder = factory.newDocumentBuilder();
documentBuilder.setEntityResolver(new EntityManager());
......
public class EntityManager implements EntityResolver {
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
/* code goes here to return contents of DTD */
}
}
答案 1 :(得分:0)
这将允许您在.jar中存储任意文件类型并稍后检索。打包.jar时,请明确包含DTD文件。例如:
jar cvfm myClass.jar manifest.mf *.class relative\path\to\file.dtd
观察操作系统的(反向)斜线方向。然后,要检索要在代码中使用的资源,请使用:
getClass().getResource("relative/path/to/file.dtd")