Как создать DTD и интегрировать его в файл JAR ..? - PullRequest
1 голос
/ 26 марта 2011

На самом деле у меня есть Java-программа, которая читает данные из определенного файла XML. теперь я хочу создать файл jar для этой программы, а также включить в него соответствующий DTD, чтобы any1, использующий мой JAR, мог проверить свой XML по этому DTD.

Пожалуйста, помогите, заранее спасибо!

Ответы [ 2 ]

1 голос
/ 26 марта 2011

Вам потребуется создать класс Resolver, который разрешает общедоступные или системные идентификаторы для ваших DTD в копию DTD, которую вы упаковываете в свой 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 */
  }

}
0 голосов
/ 26 марта 2011

Это позволит вам сохранить произвольный тип файла в вашем .jar и получить его позже.Когда вы упаковываете свой .jar, включите файл DTD явно.Например:

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

Следите за направлением (назад) косой черты для вашей ОС.Затем, чтобы получить этот ресурс для использования в вашем коде, используйте:

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