如何创建 DTD 并将其集成到 JAR 文件中..?

发布于 2024-10-27 00:14:47 字数 127 浏览 1 评论 0原文

实际上,我有一个 java 程序,可以从特定的 XML 文件中读取数据。 现在我想为该程序创建一个 jar 文件,并包含相应的 DTD,以便任何使用我的 JAR 的人都可以根据该 DTD 检查其 XML。

请帮忙,提前致谢!

actually i have a java program that reads the data from a specific XML file.
now i want to create a jar file for that program and also include the corresponding DTD with it, so that any1 who uses my JAR can get its XML checked against that DTD.

Pls help, thanks in advance !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

美人迟暮 2024-11-03 00:14:47

您需要创建一个 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 */
  }

}

You will need to create a Resolver class which resolves public or system IDs for your DTD(s) to the copy of the DTD you package in your jar.

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 */
  }

}
手心的海 2024-11-03 00:14:47

这将允许您在 .jar 中存储任意文件类型并稍后检索。当您打包 .jar 时,请明确包含 DTD 文件。例如:

jar cvfm myClass.jar manifest.mf *.class relative\path\to\file.dtd

观察操作系统的(反)斜杠的方向。然后,要检索该资源以在代码中使用,请使用:

getClass().getResource("relative/path/to/file.dtd")

This will allow you to store an arbitrary file type in your .jar and retrieve that later. When you package your .jar, include the DTD file explicitly. For example:

jar cvfm myClass.jar manifest.mf *.class relative\path\to\file.dtd

Watch the direction of (back)slashes for your OS. Then, to retrieve that resource for use in your code, use:

getClass().getResource("relative/path/to/file.dtd")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文