Может JAXB анализировать большие XML-файлы в блоках

Я пошел бы с подходом файловой системы, прежде всего, из-за его лучшей гибкости. Полагайте, что, если количество изображений становится огромным, одна база данных не может быть в состоянии обработать его. С файловой системой Вы можете простой добавлять больше файловых серверов, предполагая использование NFS или вида.

Другое преимущество, которое имеет подход файловой системы, должно быть в состоянии сделать некоторые необычные материалы, такие как, можно использовать Amazon S3 в качестве основной памяти (сохраните URL в базе данных вместо пути к файлу). В случае отключений электричества происходят с S3, Вы отступаете к своему файловому серверу (может быть другая запись базы данных, содержащая путь к файлу). Некоторый вуду для применения к Apache или безотносительно веб-сервера Вы используете.

23
задан John F. 15 July 2009 в 21:26
поделиться

1 ответ

Это подробно описано в руководстве пользователя . Загрузка JAXB с http://jaxb.java.net/ включает пример того, как анализировать по одному фрагменту за раз.

Когда документ большой, он обычно потому, что есть повторяющиеся части в нем. Возможно это покупка заказ с большим списком позиций, или, возможно, это файл журнала XML с большое количество записей журнала.

Этот вид XML подходит для chunk-обработка; основная идея состоит в том, чтобы использовать StAX API, запустить цикл и демаршалировать отдельные куски раздельно. Ваша программа действует на один кусок, а затем выбрасывает его. Таким образом, вы будете только придерживаться большая часть памяти, что позволяет вы можете обрабатывать большие документы.

См. потоковое демаршалинг пример и частичный демаршаллинг пример в дистрибутиве JAXB RI чтобы узнать больше о том, как это сделать. В пример потокового демаршаллинга имеет преимущество в том, что он может обрабатывать куски на произвольный уровень вложенности, но он требует разобраться с моделью push --- Unmarshaller JAXB будет "проталкивать" новые кусок вам, и вам нужно обрабатывать их прямо здесь.

Напротив, частичная демаршаллинг пример работает в модели вытягивания (которая обычно упрощает обработку), но у этого подхода есть некоторые ограничения в частях привязки данных, кроме повторяющаяся часть.

19
ответ дан 29 November 2019 в 01:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: