Tôi có một XML rất lớn (~ 2GB) và tôi cần phải thêm các yếu tố mới và sửa đổi các yếu tố cũ. Ví dụ, tôi có:Làm thế nào để sửa đổi một tệp XML khổng lồ của StAX?
<books>
<book>....</book>
...
<book>....</book>
</books>
Và muốn có được:
<books>
<book>
<index></index>
....
</book>
...
<book>
<index></index>
....
</book>
</books>
tôi đã sử dụng đoạn mã sau:
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();
Nhưng kết quả là như sau:
<books>
<book>....</book>
....
<book>....</book>
</books><index></index>
Bất kỳ ý tưởng nào?
Nếu bạn có đủ bộ nhớ, vtd-xml là tùy chọn cung cấp mã hóa đơn giản hơn đáng kể ... trong khi đó mất thêm 50% bộ nhớ và giữ tất cả mọi thứ trong bộ nhớ, nó không phát sinh như DOM http://sdiwc.us/digitlib/journal_paper.php?paper=00000582.pdf –