This tip creates a StAX filter using the javax.xml.stream.StreamFilter interface. This filter accepts only characters, but you can also set the filter XML to retrieve only elements, attributes, or both:
class BasicStreamFilter implements StreamFilter{public BasicStreamFilter(){}//implement the StreamFilter.accept methodpublic boolean accept(XMLStreamReader XMLsrFilter) { if(XMLsrFilter.isCharacters())return true; else return false; }}...public class StAXBasicStreamFilter{ public StAXBasicStreamFilter(){} public static void main(String[] args) { XMLInputFactory XMLif=null; XMLStreamReader XMLsr=null; XMLStreamReader XMLsrFilter=null; System.setProperty("javax.xml.stream.XMLInputFactory","com.sun.xml.stream.ZephyrParserFactory"); //create an XMLInputFactory intanceXMLif=XMLInputFactory.newInstance(); //setting a few propertiesXMLif.setProperty("javax.xml.stream.isSupportingExternalEntities",Boolean.TRUE);XMLif.setProperty("javax.xml.stream.isNamespaceAware",Boolean.TRUE);XMLif.setProperty("javax.xml.stream.isReplacingEntityReferences",Boolean.TRUE); //get an XMLStreamReader objecttry{ XMLsr=XMLif.createXMLStreamReader ("file:///C:/Data_Local/XML/",new FileReader ("C://Data_local//XML//AutoDealer.xml")); XMLsrFilter=XMLif.createFilteredReader(XMLsr,new BasicStreamFilter ()); }catch(java.io.FileNotFoundException e) {System.out.println(e.getMessage()); }catch(javax.xml.stream.XMLStreamException e) {System.out.println(e.getMessage());} ... while(XMLsrFilter.hasNext()) { int ev=XMLsrFilter.getEventType(); ...