Я анализирую 800 xml файлов в секунду с анализатором StAX. Существует небольшая вероятность того, что один из тегов в этих xml файлах окажется пустым, как <tag></tag>
вместо <tag>info</tag>
. Всякий раз, когда это происходит, я получаю следующую ошибку:
Exception in thread "Thread-1" java.lang.ClassCastException: com.sun.xml.internal.stream.events.EndElementEvent cannot be cast to javax.xml.stream.events.Characters
at com.sun.xml.internal.stream.events.DummyEvent.asCharacters(Unknown Source)
at client$1.run(maini.java:78)
Что я могу сделать, чтобы поймать эту ошибку?
Редактировать: Код:
while (loop == true) {
XMLEvent nextEvent = reader.nextEvent();
//System.out.println(nextEvent);
if (nextEvent.isStartElement()) {
StartElement startElement = nextEvent.asStartElement();
switch (startElement.getName().getLocalPart()) {
case "WEATHERDATA":
Attribute station2 = startElement.getAttributeByName(new QName("station2"));
if (station2 != null) {
System.out.println(((javax.xml.stream.events.Attribute) station2).getValue());
}
break;
case "MEASUREMENT":
break;
case "STN":
nextEvent = reader.nextEvent();
station = nextEvent.asCharacters().getData();
output += station + ",";
break;
case "WNDDIR":
nextEvent = reader.nextEvent();
output += nextEvent.asCharacters().getData() + "\r\n";
break;
default:
nextEvent = reader.nextEvent();
output += nextEvent.asCharacters().getData() + ",";
break;
}
}
if (nextEvent.isEndElement()) {
EndElement endElement = nextEvent.asEndElement();
if (endElement.getName().getLocalPart().equals("WEATHERDATA")) {
loop = false;
}
else if (endElement.getName().getLocalPart().equals("MEASUREMENT")) {
String finaloutput = output;
String finalstation = station;
Runnable task = () -> {
fileWriter(finaloutput, pathfile +finalstation+ ".txt");
};
executor.execute(task);
output = "";
}
}
Это дает ошибка в строке "output += nextEvent.asCharacters().getData() + ",";
.