EventFilterExample.java Source code

Java tutorial

Introduction

Here is the source code for EventFilterExample.java

Source

import java.io.File;
import java.io.FileInputStream;

import javax.xml.stream.EventFilter;
import javax.xml.stream.StreamFilter;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.events.XMLEvent;

public class EventFilterExample {
    public static void main(String[] args) throws Exception {
        File file = new File("text.xml");

        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
        XMLEventReader reader = inputFactory.createXMLEventReader(new FileInputStream(file));

        System.out.println("Unfiltered Count = " + countEvents(reader));

        reader = inputFactory.createXMLEventReader(new FileInputStream(file));

        EventFilter filter = new ElementOnlyFilter();
        reader = inputFactory.createFilteredReader(reader, filter);

        System.out.println("Filtered Count = " + countEvents(reader));
    }

    private static int countEvents(XMLEventReader reader) throws XMLStreamException {
        int counter = 0;
        while (reader.hasNext()) {
            reader.next();
            counter++;
        }
        return counter;
    }
}

class ElementOnlyFilter implements EventFilter, StreamFilter {
    public boolean accept(XMLEvent event) {
        return accept(event.getEventType());
    }

    public boolean accept(XMLStreamReader reader) {
        return accept(reader.getEventType());
    }

    private boolean accept(int eventType) {
        return eventType == XMLStreamConstants.START_ELEMENT || eventType == XMLStreamConstants.END_ELEMENT;
    }
}