Comment modifier un énorme fichier XML par StAX?

J'ai un énorme XML (~2 GO) et j'ai besoin d'ajouter de nouveaux Éléments et de modifier les anciens. Par exemple, j'ai:

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

Et que vous souhaitez obtenir:

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

J'ai utilisé le code suivant:

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

Mais le résultat a été le suivant:

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

Des idées?

OriginalL'auteur Eugene | 2013-05-10