Наилучшая практика для создания больших файлов XML
Я должен построить файл XML для входа в службу SOAP в Java. Входной XML может содержать не менее 1000 тегов. Каков наилучший способ построить XML? У меня есть файлы XSD, но использовать JAXB немного сложно. Является ли XMLStreamWriter хорошим вариантом для этого?
1 ответ
XMLStreamWriter - один из лучших API-интерфейсов, который можно использовать для написания XML из Java-приложения, но у него есть несколько особенностей (например, его обработка пространства имен немного странна), и вам может оказаться целесообразным обернуть его в удобный API-интерфейс, который знает о тип документа, который вы пишете, например, какие пространства имен он использует.
Одним из преимуществ интерфейса XMLStreamWriter является то, что существует множество реализаций на выбор. Например, у Saxon есть реализация, которая дает вам полный контроль над всеми вариантами сериализации XSLT/XQuery, а также саксонскими расширениями (например, вы даже можете контролировать порядок вывода атрибутов!)
Одна из проблем, с которыми я сталкиваюсь во всех API, основанных на событиях, заключается в том, что рано или поздно вы забудете написать конечный тег, и отладка может оказаться довольно сложной задачей. Использование API-оболочки, которое заставляет вас включать имя элемента в вызов endElement(), может быть полезно для отладки; если отладка включена, вы можете сохранить стек имен элементов и проверить, что endElement() записывает правильный тег; при отключенной отладке вы просто отбросите эту проверку.
Конечно, сериализация с использованием JAXB является высокоуровневой, но недостатком является то, что она дает вам меньше контроля.