java - 在包中放置 DTD 的位置

标签 java xml dtd

我构建了一个包含 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/

相关文章:

java - MongoDB 和 Java,为结果添加一个值

c# - 同一张表 'tableName'不能是两个嵌套关系中的子表

xml - xjc 生成的重复嵌套类

java - 在 Java 中引用本地 DTD

java - 我们如何使用 XMLEventReader 解析 DOCTYPE 信息?

java - 在 Android 中持续检查互联网连接是否可用的有效方法

java - 无法写入文件扫描仪 try/catch Java

java - 无法构建 Maven 项目,并出现以下 Maven 错误 org.codehaus.mojo :license-maven-plugin:1. 12:check-file-header

xml - Groovy 解析 JSON 与 XML

xml - 具有 EMPTY 和 PCDATA 的 DTD 元素