So ändern Sie eine riesige XML-Datei mit StAX?

Ich habe eine riesige XML (~2GB) und ich muss hinzufügen neuer Elemente, und ändern Sie die alten. Ich habe zum Beispiel:

<books>
    <book>....</book>
    ...
    <book>....</book>
</books>

Möchten:

<books>
   <book>
      <index></index>
      ....
   </book>
   ...
   <book>
      <index></index>
      ....
   </book>
</books>

Ich verwendete den folgenden code:

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();

Aber das Ergebnis war das folgende:

<books>
   <book>....</book>
   ....
   <book>....</book>
</books><index></index>

Irgendwelche Ideen?

InformationsquelleAutor Eugene | 2013-05-10
Schreibe einen Kommentar