Java: 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();
}
...
}
}
要素 dad の開始を見つけてスキップします。ただし、例外がスローされるため、それほど高速ではありません。これは出力です:
isStartElement: true
Element BEGIN: dad
Exception in thread "main" java.lang.IllegalStateException: Current state not START_ELEMENT
それは期待したものではありません。メソッド skipElement が START_ELEMENT 状態で実行されるため、これは非常に予想外です。何が起こっているのかわかりません。多分あなたはもっと知っています:)。だから私を助けてください。
よろしく
お願いします