gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 01:59:07 24 4
gpt4 key购买 nike

我正在阅读一个列表,该列表在某些组件下有大量文件。例如

component1:filelocation1/a11.ear
component1:filelocation1/a12.ear
component2:filelocation2/a2.ear
component3:filelocation3/a3.ear
component4:filelocation3/basefile.properties

我需要递归地解压缩每个文件,直到数据的最后一层,并生成一个 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>

这样做的最佳方法是什么?我正在考虑使用 DOM 解析器来生成 XML。

最佳答案

由于 JAR 文件也是 ZIP 文件,如果您打算在 Java 中执行此操作,我会使用 java.util.zip 库。尽管您仍然需要递归地打开嵌入在 WAR 和 EAR 中的任何 JAR,但它会省去单步执行包含平面文件的目录的麻烦。您还可以使用 java.util.zip 库提供的 ZipFile 的 JarFile 子类。

http://docs.oracle.com/javase/6/docs/api/java/util/zip/ZipFile.html

我也可能不会为了打印出 XML 而使用 DOM 解析器。当您可以随时将数据打印到流中时,您将在内存中构建一个(可能很大的)结构。此外,解析器用于将 XML 解析为数据结构,而不是相反。标准的 Java DOM 解析类 javax.xml.parsers.DocumentBuilderFactory 和 javax.xml.parsers.DocumentBuilder 不带有“打印”命令。从 org.w3c.dom.Document 对象创建格式化文本输出的标准方法是使用 XSL 转换器(请参阅 http://java.sun.com/webservices/reference/tutorials/jaxp/html/xslt.html#gghkq),而且这可能比它的值(value)更麻烦。我想这取决于你想扩展这个程序的程度,但如果你在这里拥有的就是它所要做的,我就不会构建一个大的 DOM 对象。

关于java - 生成递归目录搜索的 XML 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9617598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com