的Java的一部分:1.6
Woodstox:4.1.4woodstox跳過XML
我只是想跳過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狀態下執行。我不知道發生了什麼,也許你知道更多:)。 所以請幫助我。
在此先感謝
休伯特
'== true'很明顯,但多餘。 –