Я новичок в Java и работаю над кодом для распаковки zip-файла, содержащего около 100 000 XML-файлов, а затем объединения этих файлов в 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, но не смог понять, как получить доступ к тегу изображения, который является своего рода правнуком корневого тега «Items».