爪哇:1.6
伍德斯托克斯:4.1.4
我只想在解析时跳过部分 xml 文件。让我们看一下那个简单的xml:
<family>
<mom>
<data height="160"/>
</mom>
<dad>
<data height="175"/>
</dad>
</family>
我只想跳过爸爸元素。所以看起来像使用如下所示的 skipElement 方法是一个好主意:
FileInputStream fis = ...;
XMLStreamReader2 xmlsr = (XMLStreamReader2) xmlif.createXMLStreamReader(fis);
String currentElementName = null;
while(xmlsr.hasNext()){
int eventType = xmlsr.next();
switch(eventType){
case (XMLEvent2.START_ELEMENT):
currentElementName = xmlsr.getName().toString();
if("dad".equals(currentElementName) == true){
logger.info("isStartElement: " + xmlsr.isStartElement());
logger.info("Element BEGIN: " + currentElementName);
xmlsr.skipElement();
}
...
}
}
我们只是找到元素爸爸的开始,然后跳过它。但不是那么快,因为会抛出异常。这是输出:
isStartElement: true
Element BEGIN: dad
Exception in thread "main" java.lang.IllegalStateException: Current state not START_ELEMENT
这不是预期的。这确实很意外,因为方法 skipElement 是在 START_ELEMENT 状态下执行的。我不知道发生了什么,也许你知道更多:)。所以请帮助我。
提前感谢
休伯特