0
我想分裂一个XML文件使用以下方法,它创建第一个拆分文件没有问题,但是当我使用output.clear();要清除已经写入的XMLEvent数组,它会抛出错误。根据大小拆分XML使用Java
错误:异常线程“main” 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();
}
}
}
嗨Mickaël,谢谢你的回复..我调试了程序,看看第二个循环的输出是否为空,但是它被成功清除并且XMLEvents再次被添加。 –
造成异常的行是什么? (XMLEvent i:output) –
{xmlEventWriter.add(i); }问题似乎在这里..我已经添加了xmlWriter.flush();在我调试时看到每个输出,并且程序开始将元素输出到第二个文件,但输出2个元素并且程序终止后抛出错误 –