2015-12-05 3 views
1

Можно ли написать кусок xml напрямую с помощью StAX? Я знаю, что могу использовать XMLStreamWriter с writeStartElement, writeCharacters и writeEndElement, но нет гибкости для строк xml.Запись строки xml с помощью StAX

Как обойти это ограничение, учитывая, что мне нужно написать большой XML-файл (> 100 МБ).

У меня есть произвольные строки xml, подобные этому, иногда с довольно сложной структурой, которые необходимо добавить вместе с некоторыми другими деталями, чтобы сформировать окончательный файл xml. Это всего лишь пример не фактической строки xml.

<food> 
<name>Strawberry Belgian Waffles</name> 
<price>$7.95</price> 
<description> 
Light Belgian waffles covered with strawberries and whipped cream 
</description> 
<calories>900</calories> 
</food> 

ответ

2

Хотя есть способ writeCharacters() на XMLStreamWriter это не делать то, что вы хотите. Это, в конце концов, ускользает от '<', '>', '&'

Поскольку у вас уже есть XML-строка в памяти, вы можете прибегнуть к взлому.

Всякий раз, когда вам нужно написать сырые XML сохранить ссылку на основной автор и сделать следующее:

// somewhere before: 
Writer underlyingWriter = /* get the underlying writer from somewhere */; 
XMLStreamWriter xmlStreamWriter = factory.createXmlStreamWriter(underlyingWriter); 

xmlStreamWriter.flush(); 
underlyingWriter.write(rawXML); 
underlyingWriter.flush(); 
// carry on using the XMLStreamWriter 

Вы должны очистить XMLStreamWriter перед использованием базового писателя, чтобы обеспечить правильный порядок элементов. Кроме того, вы должны очистить базовый сценарий по той же причине.

Смежные вопросы