Exemple de STAX cursor

Author:


Download

 
import java.io.FileInputStream;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.events.XMLEvent;
 
class StaxCursorTest {
    public static void main(String[] args) throws Exception {
 
        String filename = "yourXML.xml";
 
        XMLInputFactory xmlif = null;
 
        xmlif = XMLInputFactory.newInstance();
        xmlif.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES,Boolean.TRUE);
        xmlif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES,Boolean.FALSE);
        xmlif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);
 
        try {
            XMLStreamReader xmlr = xmlif.createXMLStreamReader(filename,new FileInputStream(filename));
            int eventType = xmlr.getEventType();
            printStartDocument(xmlr);
            while (xmlr.hasNext()) {
                eventType = xmlr.next();
                printStartElement(xmlr);
                printEndElement(xmlr);
                printText(xmlr);
                printPIData(xmlr);
                printComment(xmlr);
            }
        } catch (XMLStreamException ex) {
            System.out.println(ex.getMessage());
            if (ex.getNestedException() != null) {
                ex.getNestedException()
                  .printStackTrace();
            }
        }
    }
 
    public static final String getEventTypeString(int eventType) {
        switch (eventType) {
        case XMLEvent.START_ELEMENT:
            return "START_ELEMENT";
 
        case XMLEvent.END_ELEMENT:
            return "END_ELEMENT";
 
        case XMLEvent.PROCESSING_INSTRUCTION:
            return "PROCESSING_INSTRUCTION";
 
        case XMLEvent.CHARACTERS:
            return "CHARACTERS";
 
        case XMLEvent.COMMENT:
            return "COMMENT";
 
        case XMLEvent.START_DOCUMENT:
            return "START_DOCUMENT";
 
        case XMLEvent.END_DOCUMENT:
            return "END_DOCUMENT";
 
        case XMLEvent.ENTITY_REFERENCE:
            return "ENTITY_REFERENCE";
 
        case XMLEvent.ATTRIBUTE:
            return "ATTRIBUTE";
 
        case XMLEvent.DTD:
            return "DTD";
 
        case XMLEvent.CDATA:
            return "CDATA";
 
        case XMLEvent.SPACE:
            return "SPACE";
        }
 
        return "UNKNOWN_EVENT_TYPE , " + eventType;
    }
 
    private static void printEventType(int eventType) {
        System.out.println("EVENT TYPE(" + eventType + ") = " + getEventTypeString(eventType));
    }
 
    private static void printStartDocument(XMLStreamReader xmlr) {
        if (xmlr.START_DOCUMENT == xmlr.getEventType()) {
            System.out.println(
                    "");
        }
    }
 
    private static void printComment(XMLStreamReader xmlr) {
        if (xmlr.getEventType() == xmlr.COMMENT) {
            System.out.print("<!--" + xmlr.getText() + "-->");
        }
    }
 
    private static void printText(XMLStreamReader xmlr) {
        if (xmlr.hasText()) {
            System.out.print(xmlr.getText());
        }
    }
 
    private static void printPIData(XMLStreamReader xmlr) {
        if (xmlr.getEventType() == XMLEvent.PROCESSING_INSTRUCTION) {
            System.out.print(
                    "");
        }
    }
 
    private static void printStartElement(XMLStreamReader xmlr) {
        if (xmlr.isStartElement()) {
            System.out.print("&lt;&quot; + xmlr.getName().toString());
            printAttributes(xmlr);
            System.out.print(");
        }
    }
 
    private static void printEndElement(XMLStreamReader xmlr) {
        if (xmlr.isEndElement()) {
            System.out.print("&lt;/&quot; + xmlr.getName().toString() + ");
        }
    }
 
    private static void printAttributes(XMLStreamReader xmlr) {
        int count = xmlr.getAttributeCount();
 
        if (count &gt; 0) {
            for (int i = 0; i  0) {
            for (int i = 0; i &lt; count; i++) {
                System.out.print(&quot; &quot;);
                System.out.print(&quot;xmlns&quot;);
 
                if (xmlr.getNamespacePrefix(i) != null) {
                    System.out.print(&quot;:&quot; + xmlr.getNamespacePrefix(i));
                }
 
                System.out.print(&quot;=&quot;);
                System.out.print(&quot;&quot;&quot;);
                System.out.print(xmlr.getNamespaceURI(i));
                System.out.print(&quot;&quot;&quot;);
            }
        }
    }
}

Cet article Exemple de STAX cursor est apparu en premier sur .