Какое наилучшее решение для генерации XML.
Моя цель - создать несколько простых XML-файлов из кода. Я собираюсь реализовать простую пользовательскую реализацию XML Builder на основе StringBuffer. С другой стороны, есть несколько библиотек, таких как http://code.google.com/p/java-xmlbuilder/ и http://code.google.com/p/xmltool/, которые имеют хороший DSL, но я думаю, что не хватает производительности.
Поскольку моя цель - собрать достаточно простой XMLBuilder с высокой производительностью, я думаю, что я создам собственное решение. Будет показано:
- Хороший DSL на основе Java для конструкций XML (в основном, с добавлением тегов)
- Отличная производительность на основе StringBuffer.
- Обработка экранирования строковых данных при добавлении тегов XML.
- Автоматический отступ
Пожалуйста, предложите, если я ошибаюсь в ожиданиях производительности и, возможно, лучше использовать готовые библиотеки.
ОБНОВЛЕНИЕ. Почему я думаю, что производительность стандартных сборщиков XML не очень хорошая.
Стандартные сборщики XML используют Document Builder Factory и работают с классами за кулисами. Также эти классы оптимизированы под все пользователи. Например, мне не нужна поддержка пространства имен и т. Д.
<?xml version="1.0" encoding="utf-8">
<root>
<testdata>value</testdata>
</root>
</xml>
Рассмотрим очень простой XML-код выше. Если вы строите со стандартными инструментами, потребуется много работы только для создания этого простого XML. Я считаю, что лучше просто сгенерировать его самостоятельно, используя String.
ОБНОВЛЕНИЕ 2 . Требование к производительности состоит в том, что код должен делать столько вещей, сколько требуется для генерации простого XML, а не больше.
ОБНОВЛЕНИЕ 3. Спасибо всем за отличные комментарии! Теперь я лучше понимаю, что мне нужно, и что моя первоначальная цель была поставлена неправильно со словом «производительность». Моя истинная цель - использовать достаточно простое решение с удобным DSL для описания структуры XML и генерирования вывода XML.
Я буду использовать простые объекты Java в качестве DSL для XML и генерировать XML с использованием библиотеки XStream, что является довольно простым решением.
ОБНОВЛЕНИЕ 4. JAXB. Я обсуждал XStream против JAXB и обнаружил, что JAXB работает быстрее, чем XStream. Кроме того, я уже использую JAXB в своем проекте, и мне нравятся его стандартные аннотации. Я передумал и сейчас буду работать с JAXB, потому что XStream изначально был сильно развит в то время, когда JAXB был не так хорош, как сегодня.