如何使用jaxb循环多个xml文件

时间:2012-10-22 12:43:58

标签: java xml xml-parsing jaxb

我有一个应用程序创建一些临时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都具有大致相同的结构。

提前感谢您的任何帮助

2 个答案:

答案 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)实现解组内容。这样就无需将整个外部文档保存在内存中。

展示概念的示例