2017-01-07 27 views
0

我正在寻找一种方法来停止解析器,一旦我得到我的标记内容。我怎样才能做到这一点?另外我怎么知道现在我打了我的标签,我正在寻找。停止stax分析器执行

public class XmlParser { 

    public String getValue(final String xml, final String tag) throws XMLStreamException { 

    String tagContent = null; 

    final XMLInputFactory factory = XMLInputFactory.newInstance(); 
    final XMLStreamReader reader = factory.createXMLStreamReader(new StringReader(xml)); 

    while (reader.hasNext()) { 
     final int event = reader.next(); 
     switch (event) { 
     case XMLStreamConstants.START_ELEMENT: 
      break; 
     case XMLStreamConstants.CHARACTERS: 
      tagContent = reader.getText().trim(); 
      break; 
     case XMLStreamConstants.END_ELEMENT: 
      break; 
     } 
    } 
    return tagContent; 
    } 
} 

回答

1
boolean finished = false; 
while(!finished && reader.hasNext()) { 
    final int event = reader.next(); 
    //set finished = true if you hit an event that means you want to stop parsing 
} 
//don't forget to close the reader and the I/O streams 
+0

我想可能是有一个从Stax的API停止。 :) –

+0

当您不再需要继续解析时,您只需关闭XML流或事件阅读器。 –