私は巨大なXML(〜2GB)を持っており、新しい要素を追加して古い要素を変更する必要があります。例えば、私が持っている:StAXで巨大なXMLファイルを変更するには?
<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>
アイデア
十分なメモリがあれば、vtd-xmlは非常に簡単なコーディングを提供するオプションです。メモリを50%増やし、すべてをメモリに保存すると、DOMのように爆発しませんhttp://sdiwc.us/digitlib/journal_paper.php?paper=00000582.pdf –