我正在尝试使用以下方法拆分 XML 文件,它创建了第一个拆分文件没有问题,但是当我使用 output.clear(); 清除已经写入的 XMLEvents 数组会引发错误。
错误:线程“主”javax.xml.stream.XMLStreamException 中的异常:找不到要写入的元素:java.lang.ArrayIndexOutOfBoundsException:-1
我试图调查这个问题但没有成功,任何关于导致错误的原因或如何克服它的建议都非常感谢!
public void SplitBySize() throws FileNotFoundException, XMLStreamException, IOException {
//File Path
String filePath = "C:\\Users\\thamm\\Desktop\\XMLFile\\Data2.xml";
//Read XML file.
Reader fileReader = new FileReader(filePath);
//Get XMLInputFactory instance.
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
//Create XMLEventReader object.
XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(fileReader);
long charCount = 0;
int fileNumber = 1;
while (xmlEventReader.hasNext()) {
XMLEvent event = xmlEventReader.nextEvent();
charCount++;
output.add(event);
if (charCount == MAX_SIZE) {
XMLEventWriter xmlEventWriter = factory.createXMLEventWriter(new FileWriter("C:\\Users\\thamm\\Desktop\\SplitFiles\\output_part_" + fileNumber + ".xml"));
for (XMLEvent i : output) {
xmlEventWriter.add(i);
}
xmlEventWriter.close();
output.clear();
charCount = 0;
fileNumber++;
}
if (event.isEndDocument()) {
XMLEventWriter xmlEventWriter = factory.createXMLEventWriter(new FileWriter("C:\\Users\\thamm\\Desktop\\SplitFiles\\output_part_End.xml"));
for (XMLEvent i : output) {
xmlEventWriter.add(i);
}
xmlEventWriter.close();
output.clear();
}
}
}