生成递归目录搜索的XML映射

rom*_*mel 5 java xml java-ee

我正在阅读一个列表,该列表在某些组件下具有大量存档.例如

component1:filelocation1/a11.ear
component1:filelocation1/a12.ear
component2:filelocation2/a2.ear
component3:filelocation3/a3.ear
component4:filelocation3/basefile.properties
Run Code Online (Sandbox Code Playgroud)

我需要递归地解压缩每个归档,直到最后一级数据,并生成一个XML映射文件,捕获从组件到归档中最后一个元素的正确映射.

其xml文档结构如下:

<my-app>
    <mapping>
    <toplevel loc="filelocation1" filename="a11.ear" component="component1">
        <childlevel loc="." filename="x1.war">
          <childlevel loc="WEB-INF/classes" filename="abc1.class"/>
          <childlevel loc="WEB-INF/classes" filename="abc2.class"/>
        </childlevel>
    </toplevel> 
    <toplevel loc="filelocation1" filename="a12.ear" component="component1">
      <childlevel loc="." filename="x2.jar">
      <childlevel loc="org/test" filename="abc1.class"/>
      <childlevel loc="org/test" filename="abc2.class"/>
      </childlevel>
      <childlevel loc="." filename="x3.war">
          <childlevel loc="WEB-INF/lib" filename="web1.jar">
          <childlevel loc="org/test" filename="abc1.class"/>
      </childlevel>
      <childlevel loc="WEB-INF/classes" filename="abc2.class"/>
      </childlevel>
    </toplevel> 
    </mapping>
    </my-app>
Run Code Online (Sandbox Code Playgroud)

做那个最好的appraoch是什么?我正在考虑使用DOM解析器来生成XML.

tre*_*ism 0

我会使用gradle来做到这一点。

Gradle 有很好的内置设施来解压档案。您可以使用 groovy(随 gradle 一起提供)进行 XML 解析/生成,这比使用 Java XML 库要干净得多。