【发布时间】:2021-07-28 01:29:18
【问题描述】:
我是 java 初学者,一直在编写代码来解压缩包含大约 100 000 个 XML 文件的 zip 文件,然后将这些文件合并为 1 个 XML 文件,这样我就可以处理一个文件而不是加载这么多文件。 我解压缩文件并将其合并为 1 个文件并使用 DOM 解析器进行解析,但现在我需要修改此合并的 XML 文件,然后将其写回 1 个文件中。我可以使用 DOM 解析器和 StringBuilder 来做到这一点,但看起来 StringBuilder 无法处理这个大文件,因为它会给出 java 堆空间错误。
随着我的进一步研究,我了解到 STAX 解析器可能非常适合处理具有更好性能的大文件。
我已经阅读了多篇文章和教程,但还无法编写出满足我要求的代码。 所以,我的 XML 有多个标签,合并后我的结构是这样的:
<Items>
<Item >
<Tag1>
</Tag1>
<Tag2>
</Tag2>
<Images>
<Image>
<width>200</width>
<height>200</height>
<url>xyz.com</url>
<action>update</action>
</Image>
<Image>
<width>400</width>
<height>600</height>
<url>xyz.com</url>
<action>update</action>
</Image>
</Images>
</Item>
<Item >
<Tag1>
</Tag1>
<Tag2>
</Tag2>
<Images>
<Image>
<width>100</width>
<height>400</height>
<url>abc.com</url>
<action>update</action>
</Image>
<Image>
<width>400</width>
<height>200</height>
<url>xyz.com</url>
<action>update</action>
</Image>
</Images>
</Item>
</Items>
我的要求是检查图像标签下的宽度和高度是否大于某个值,然后只取图像标签,否则从图像部分删除它。 同样,我需要从文件中删除一些其他标签,一旦所有处理完成,将返回整个 XML 文件并进行更改。
我浏览了很多关于 STAX 实现的文章,但我无法弄清楚如何访问 Image 标签,它是根标签
【问题讨论】: