我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">
]>
答案 0 :(得分:0)
通过相对路径名访问文件或目录与类路径无关。
使用系统属性user.dir
(Java应用程序启动时的工作目录)解析相对路径名。
您可以尝试从这些相对路径的父目录启动应用程序。
根据XML规范, relative 外部标识符应该与使用它的XML文件相关,这是另一个机会。