使用JAXB使用DOCTYPE ENTITY声明解组XML文件

时间:2014-08-09 18:21:59

标签: java xml jaxb unmarshalling

unmarshalling使用JAXB在我的本地文件系统中存在一些XML文件。

只要源XML中没有任何unmarshalling声明,ENTITY就可以了。但是其中一些XML文件使用相对路径导入一些带有DOCTYPE ENTITY声明的XML文件。这会导致JAXB尝试找到导入的文件失败,因为相对路径与当前类路径完全没有连接,因此发生FileNotFoundException。我该如何解决这个问题?

FWIW,我的类路径中的XML中的复杂类型的模型JAVA对象(如下面使用的Root类)确实具有使用{{1生成的jar的{​​{1}} }}

XML文件中的DOCTYPE声明:

maven-jaxb-plugin

我用来解组XML的代码:

<!DOCTYPE doc [
<!ENTITY decorator SYSTEM "relative/path/to/another/xmlfile">
]>

1 个答案:

答案 0 :(得分:0)

通过相对路径名访问文件或目录与类路径无关。

使用系统属性user.dir(Java应用程序启动时的工作目录)解析相对路径名。

您可以尝试从这些相对路径的父目录启动应用程序。

根据XML规范, relative 外部标识符应该与使用它的XML文件相关,这是另一个机会。

相关问题