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

Java 如何创建DTD并将其集成到JAR文件中。。?,java,xml,jar,dtd,Java,Xml,Jar,Dtd,实际上,我有一个java程序,可以从特定的XML文件中读取数据。 现在,我想为该程序创建一个jar文件,并包含相应的DTD,以便使用我的jar的任何人都可以根据该DTD检查其XML 请帮忙,提前谢谢 这将允许您在.jar中存储任意文件类型,并在以后检索该文件。打包.jar时,请显式包含DTD文件。例如: jar cvfm myClass.jar manifest.mf *.class relative\path\to\file.dtd 观察操作系统(背面)斜线的方向。然后,要检索该资源以在代码

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


请帮忙,提前谢谢

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

jar cvfm myClass.jar manifest.mf *.class relative\path\to\file.dtd
观察操作系统(背面)斜线的方向。然后,要检索该资源以在代码中使用,请使用:

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

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

jar cvfm myClass.jar manifest.mf *.class relative\path\to\file.dtd
观察操作系统(背面)斜线的方向。然后,要检索该资源以在代码中使用,请使用:

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

您需要创建一个解析器类,该类将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 */
  }

}

您需要创建一个解析器类,该类将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 */
  }

}

嘿,谢谢你的回复。。也许我不清楚我想要什么。。我会重新构思我的问题。嘿,谢谢你的回答。。也许我不清楚我想要什么。。我将重新构建我的问题。当我使用JAXB解组器时,我如何处理这个问题?JAXB有一个API用于此。也许写一个新问题?当我使用JAXB解组器时,我如何处理这个问题?JAXB有一个API。也许写一个新问题?