0

我有一个实用程序类,它将一个对象转换为一个 xml 字符串,然后从中构建一个 pdf。

该课程运行良好,但我最近开始在 Tomcat 上使用持续部署(即 app.war 现在部署为 app##00010.war 并且该应用程序的新版本每天上传两次),从那时起我有了一些DocumentBuilder 的大量问题。

我的实用程序类必须从类路径(DTD、fop conf、xsl 样式表等)加载几个文件。我使用完整路径 [path start]/Tomcat 7.0/webapps/ app##0010 /[path to file] 加载文件,但我得到 FileNotFoundException [path start]\Tomcat 7.0\webapps\ app(系统找不到指定的文件)。

因此 DocumentBuilder 似乎忽略了我给他的完整路径。

这是我用来将 xml 字符串转换为 xml 文件的方法:

    public static Document stringToXml(String xmlSource) throws SAXException,ParserConfigurationException,
        MalformedURLException,IOException{
    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    DocumentBuilder builder=factory.newDocumentBuilder();

    return builder.parse(new InputSource(new StringReader(xmlSource)));
}

xmlSource 类似于"<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE doc SYSTEM "file:///[path start]/Tomcat 7.0/webapps/app##0010/ [...] /pdf.dtd">"

知道如何解决这个问题吗?

4

1 回答 1

0

好的,我使用自定义实体解析器修复了它,如本文所示:Parsing an XML file with a DTD schema on a relative path

于 2013-07-17T14:28:39.560 回答