В предыдущих уроках вы видели, как создается XML-документ посредством написания DOM-дерева. Если DOM-дерево вы больше нигде не используете, то этот вариант будет не очень эффективным.
StAX API позволяет сразу написать XML-дерево. Для этого нужно создать XMLStreamWriter из OutputStream, как показано ниже:
1 2 |
XMLOutputFactory factory = XMLOutputFactory.newInstance(); XMLStreamWriter writer = factory.createXMLStreamWriter(out); |
Оптовая продажа детской обуви осуществляется нашей компанией по всей Украине. У нас вы можете купить обувь для мальчиков оптом. Вы будете приятно удивлены качеством предоставляемой нами продукции, а также оперативностью доставки
Чтобы создать XML-заголовок, вызовите следующий метод:
1 |
writer.writeStartDocument(); |
После этого вызовите метод:
1 |
writer.writerStartElement(name); |
Добавьте атрибуты, вызвав такой метод:
1 |
writer.writeAttribute(name, value); |
Теперь можно добавить дочерние элементы, снова вызвав метод writeStartElement, или записать символы посредством метода:
1 |
writer.writeCharacters(text); |
После того как вы напишете все дочерние узлы, вызовите метод:
1 |
writer.writeEndElement(); |
Этот метод закроет текущий элемент.
Чтобы написать элемент без потомков(например, <img _/>), следует вызвать метод:
1 |
writer.writeEmptyElement(name); |
В конце документа вызовите метод:
1 |
write.writeEndDocument(); |
Этот метод закроет все открытые элементы.
Как и при использовании подхода с DOM/XSLT, вам не следует беспокоиться о пропуске символов в значениях атрибутов и данных символов. Однако в этом случае существует вероятность того, что вы создаете плохо сформированный XML, например, документ с множеством корневых узлов. Кроме того, текущая версия StAX не поддерживает создание вывода с отступами.