У меня есть огромный XML (~ 2 ГБ), и мне нужно добавить новые элементы и изменить старые. Например, у меня есть:
<books>
<book>....</book>
...
<book>....</book>
</books>
И хотите получить:
<books>
<book>
<index></index>
....
</book>
...
<book>
<index></index>
....
</book>
</books>
Я использовал следующий код:
XMLInputFactory inFactory = XMLInputFactory.newInstance();
XMLEventReader eventReader = inFactory.createXMLEventReader(new FileInputStream(file));
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLStreamWriter writer = factory.createXMLStreamWriter(new FileWriter(file, true));
while (eventReader.hasNext()) {
XMLEvent event = eventReader.nextEvent();
if (event.getEventType() == XMLEvent.START_ELEMENT) {
if (event.asStartElement().getName().toString().equalsIgnoreCase("book")) {
writer.writeStartElement("index");
writer.writeEndElement();
}
}
}
writer.close();
Но результат был следующим:
<books>
<book>....</book>
....
<book>....</book>
</books><index></index>
Любые идеи?