我有一个应用程序创建一些临时XML,我必须解析并捕获一些信息。 其中一个XML包含多个行,每个行都包含每个相关XML的路径。 它类似于:
<z:row TimeStamp="2012-09-25T09:58:49" FileName="\\test\app\myfile_AB.xml"/>
<z:row TimeStamp="2012-09-25T09:58:49" FileName="\\test\app\myfile_CD.xml"/>
...
我想知道是否可以使用JAXB解析这个“主”XML,获取所有路径,然后执行循环并在一个操作中处理每个相关的XML。
所有XML都具有大致相同的结构。
提前感谢您的任何帮助
答案 0 :(得分:3)
这是可能的。您必须先定义2个单独的XSD。一个是主文件的主XSD&amp;然后第二个XSD用于其他所有文件。下面是一个建议的主XML XML结构
<files>
<z:row>
<z:row>
<z:row>
.
.
<files>
自动为两个XSD生成java pojo类。然后,无论何时收到主XML,首先使用自动生成的类为主XSD解组。在这里,您将获得对应于根元素的对象,例如Files.java对象。现在在这个文件对象中迭代行对象&amp;获取FileName。现在为每个FileName,再次创建单独的unmarshaller&amp;用自动生成的类解组该文件。
答案 1 :(得分:1)
我建议使用StAX (JSR-173) XMLStreamReader
解析外部文档。当您前进到每个row
元素时,我将JAXB (JSR-222)实现解组内容。这样就无需将整个外部文档保存在内存中。
展示概念的示例