2017-01-07 3 views
0

Я ищу способ остановить парсер, как только я получу содержимое своего тега. Как я могу это сделать? Также, как я могу знать, теперь я получил удар по моему тегу, который я ищу.stop stax parser от выполнения

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

Я думал, что может быть есть API от Stax остановиться. :) –

+0

Вы просто закрываете поток XML или считыватель событий, когда вам больше не нужно продолжать синтаксический анализ. –

Смежные вопросы