#java #xml #stax #dom4j
#java #xml #stax #dom4j
Вопрос:
Мне нужно создать некоторый XML программно, иногда с помощью программных вызовов, иногда начиная с чтения в некотором XML (строка), а затем пересматривая его с помощью вызовов. А затем записать XML в поток.
Я полагаю, что запись лучше всего выполнять с помощью codehaus stax (если есть более новый способ, пожалуйста, скажите мне, какой). Но в остальном в настоящее время я использую dom4j, и это старое и заброшенное. Поэтому мне нужно перейти на что-то, что поддерживается и не имеет проблем с безопасностью.
Есть ли что-то в среде выполнения Java? Или есть часто используемая библиотека?
Мы находимся на Java 1.8, поэтому решение не может требовать версии 1.9 или более поздней.
Комментарии:
1. У Джексона есть возможности xml
Ответ №1:
Здесь у вас есть много вариантов.
Синтаксические анализаторы
Синтаксические анализаторы берут весь документ (разбор SAX здесь является исключением) и создают древовидную структуру из некоторых общих классов, таких как Document
, Node
и т.д.. Вы можете загрузить любой XML и работать с ним. Нет необходимости иметь какой-либо класс, который представлял бы файл.
Плюсы
- вы можете загрузить любой файл
- у вас есть все стандартные инструменты XML, такие как преобразования XSLT, xpath и т. Д..
Минусы
- сложно программно создать новый файл
- сложнее извлечь из него информацию
Инструменты
- Анализаторы DOM
- Синтаксический анализатор SAX
Сериализация объектов
Второй подход, который вы можете предпринять, — это синтаксический анализ объектов. У вас в основном есть класс, который представляет вашу структуру данных, и вы сериализуете его в / из XML.
Плюсы
- супер простой в использовании
- быстро просто считывать / записывать данные из существующих структур данных
Минусы
- непросто использовать XSLT и т. Д..
- не удается прочитать случайные XML-файлы
Инструменты
- JAXB
- XStream
- Джексон