We would like to know how to implement StAX EventFilter.
import java.io.FileInputStream; /*from ww w .j a v a2s .c o m*/ import javax.xml.stream.EventFilter; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.events.StartElement; import javax.xml.stream.events.XMLEvent; public class Main { public static void main(String[] args) throws Exception { XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory(); XMLEventReader xmlEventReader = xmlInputFactory .createXMLEventReader(new FileInputStream("input.xml")); InterestingElementFilter filter = new InterestingElementFilter(); XMLEventReader interestingElementReader = xmlInputFactory .createFilteredReader(xmlEventReader, filter); while (interestingElementReader.hasNext()) { XMLEvent xmlEvent = interestingElementReader.peek(); if (xmlEvent.isStartElement()) { System.out.println(xmlEvent.asStartElement().getName()); } interestingElementReader.next(); } } } class InterestingElementFilter implements EventFilter { public boolean accept(XMLEvent event) { if (event.isStartElement()) { StartElement startElement = event.asStartElement(); String name = startElement.getName().getLocalPart(); if (name.equals("InterestingElement")) { return true; } } return false; } }
input.xml
<?xml version="1.0" encoding="UTF-8"?> <root> <InterestingElement> <child>Hello World</child> </InterestingElement> </root>