Как создать большой (30MB +) XML-файл в Java? - PullRequest
6 голосов
/ 17 марта 2011

Сам файл не такой большой, должен умещаться в памяти. Но как только вы комбинируете это с другими факторами, это начинает становиться проблемой. Мы строим DOM в памяти, и это не масштабируется для нас. Использование необработанных потоков вывода кажется проблематичным в том смысле, что мы должны быть осторожны с экранированием символов.

Какие есть хорошие подходы для этого?

Есть ли товары для этого?

Ответы [ 4 ]

9 голосов
/ 17 марта 2011

STAX предоставляет удобный API для записи XML в выходной поток. Легкий учебник здесь .

1 голос
/ 17 марта 2011

С Saxon вы можете использовать API StAX XMLStreamWriter в сочетании с Serializer, который дает вам полный контроль над свойствами сериализации, как определено в xsl: output, например, возможностью контролировать отступы, использование разделов CDATA и т. Д. класс сериализатора s9api.

1 голос
/ 17 марта 2011

Попробуйте XStream

Особенности

  • Простота использования.Фасад высокого уровня поставляется, что упрощает общие случаи использования.
  • Сопоставление не требуется.Большинство объектов могут быть сериализованы без указания отображений.
  • Производительность.Скорость и низкий объем занимаемой памяти являются важной частью проекта, что делает его пригодным для больших графов объектов или систем с высокой пропускной способностью сообщений.
  • Чистый XML.Не дублируется информация, которая может быть получена путем отражения.В результате получается XML, который легче читать людям и который более компактен, чем собственная сериализация Java.
  • Не требует никаких модификаций объектов.Сериализует внутренние поля, включая приватные и финальные.Поддерживает непубличные и внутренние классы.Классы не обязаны иметь конструктор по умолчанию.
  • Полная поддержка графа объектов.Повторяющиеся ссылки, встречающиеся в объектной модели, будут сохранены.Поддерживает циклические ссылки.
  • Интегрируется с другими API-интерфейсами XML.Реализуя интерфейс, XStream может сериализовать напрямую в / из любой древовидной структуры (не только XML).
  • Настраиваемые стратегии преобразования.Можно зарегистрировать стратегии, позволяющие настроить представление определенных типов в виде XML.
  • Сообщения об ошибках.Когда возникает исключение из-за неверно сформированного XML, предоставляется подробная диагностика, помогающая локализовать и устранить проблему.
  • Альтернативный формат вывода.Модульная конструкция позволяет использовать другие форматы вывода.В настоящее время XStream поставляется с поддержкой JSON и морфингом.
0 голосов
/ 17 марта 2011

Это зависит от того, как ваши данные структурированы, но реализация StAX может быть тем, что вы ищете - например, Вудсток.

...