Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как объединить несколько xml файлов в один


Как объединить > 1000 xml-файлов в один с помощью Java

Dom действительно потребляет много памяти. У вас есть, имхо, следующие альтернативы.

лучший-использовать Sax. Используя sax, используется только очень небольшой объем памяти, потому что в любой момент времени почти один элемент перемещается от входа к выходу, поэтому объем памяти чрезвычайно низок. Однако использование sax не так просто, потому что по сравнению с dom это немного противоречит интуиции.

попробуйте Stax, не пробовал себя, но это своего рода саксофон на стероидах легче реализуйте и используйте, потому что, в отличие от получения событий sax, которые вы не контролируете, вы фактически "просите источник" передать вам нужные элементы, поэтому он помещается посередине между dom и sax, имеет объем памяти, подобный sax, но более дружественную парадигму.

Sax, stax, dom важны, если вы хотите правильно сохранить, объявить и т. д... пространства имен и другие странности XML.

однако, если вам просто нужен быстрый и грязный способ, который, вероятно, будет пространство имен совместимо также, используйте простые старые строки и записи.

начните выводить на FileWriter объявление и корневой элемент вашего" большого " документа. Затем загрузите, используя dom, если хотите, каждый файл. Выберите элементы, которые вы хотите получить в "большом" файле, сериализуйте их обратно в строку и отправьте в writer. писатель будет сбрасываться на диск без использования огромного объема памяти, а dom будет загружать только один документ на итерацию. Если у вас также нет очень большие файлы на стороне ввода или планируют запустить его на мобильном телефоне, у вас не должно быть много проблем с памятью. Если dom сериализует его правильно, он должен сохранять объявления пространства имен и тому подобное, и код будет просто кучей строк больше, чем тот, который вы опубликовали.