【问题标题】:How to loop on multiple xml files with jaxb如何使用 jaxb 循环多个 xml 文件
【发布时间】:2012-10-12 06:43:20
【问题描述】:

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

提前感谢您的帮助

【问题讨论】:

    标签: java xml xml-parsing jaxb


    【解决方案1】:

    这是可能的。您必须首先定义 2 个单独的 XSD。一个是主文件的主 XSD,然后是其他所有文件的第二个 XSD。以下是主 XML 的一种建议 XML 结构

      <files>
          <z:row>
          <z:row>
          <z:row>
          .
          .
      <files>
    

    为两个 XSD 自动生成 java pojo 类。然后,每当您收到主 XML 时,首先使用为主 XSD 自动生成的类对其进行解组。在这里,您将获得对应于根元素的对象,例如 Files.java 对象。现在在这个文件对象中迭代行对象并获取文件名。现在对于每个 FileName,再次创建单独的解组器并使用其自动生成的类解组该文件。

    【讨论】:

      【解决方案2】:

      我建议使用StAX (JSR-173) XMLStreamReader 解析外部文档。当您前进到每个 row 元素时,我将让 JAXB (JSR-222) 实现解组内容。这消除了将整个外部文档保存在内存中的需要。

      概念演示示例

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-30
        • 2015-11-09
        • 1970-01-01
        相关资源
        最近更新 更多