⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cursorparse.java

📁 JavaeeTutorial5的源代码。
💻 JAVA
字号:
/* * Copyright 2007 Sun Microsystems, Inc. * All rights reserved.  You may not modify, use, * reproduce, or distribute this software except in * compliance with  the terms of the License at: * http://developer.sun.com/berkeley_license.html */package cursor;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;/** * CursorParse sample is used to demonstrate the use * of STAX cursor approach. In this approach application * instructs the parser to read the next event in the XML * input stream by calling <code>next()</code>. * * Note that <code>next()</code> just returns an integer constant * corresponding to underlying event where the parser is positioned. * Application needs to call relevant function to get more * information related to the underlying event. * * You can imagine this approach as a virtual cursor moving across * the XML input stream. There are various accessor methods which * can be called when that virtual cursor is at particular event. * * * @author <a href="neeraj.bajaj@sun.com">Neeraj Bajaj</a> Sun Microsystems,inc. * */public class CursorParse {    private static void printUsage() {        System.out.println(                "usage: java -classpath CursorParse -x <count> <xmlfile>");    }    public static void main(String[] args) throws Exception {        int count = 0;        String filename = null;        try {            filename = args[2];            if (args[0].equals("-x")) {                count = Integer.parseInt(args[1]);            } else {                printUsage();            }        } catch (ArrayIndexOutOfBoundsException aioobe) {            printUsage();            System.exit(0);        } catch (Exception ex) {            printUsage();            ex.printStackTrace();        }        XMLInputFactory xmlif = null;        try {            xmlif = XMLInputFactory.newInstance();            xmlif.setProperty(                    XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES,                    Boolean.TRUE);            xmlif.setProperty(                    XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES,                    Boolean.FALSE);            //set the IS_COALESCING property to true , if application desires to            //get whole text data as one event.                        xmlif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);        } catch (Exception ex) {            ex.printStackTrace();        }        System.out.println("");        System.out.println("FACTORY: " + xmlif);        System.out.println("filename = " + filename);        System.out.println("");        long starttime = System.currentTimeMillis();        try {            for (int i = 0; i < count; i++) {                //pass the file name.. all relative entity refernces will be resolved against this as                //base URI.                                                                XMLStreamReader xmlr = xmlif.createXMLStreamReader(                            filename,                            new FileInputStream(filename));                //when XMLStreamReader is created, it is positioned at START_DOCUMENT event.                int eventType = xmlr.getEventType();                //printEventType(eventType);                printStartDocument(xmlr);                //check if there are more events in the input stream                while (xmlr.hasNext()) {                    eventType = xmlr.next();                    //printEventType(eventType);                    //these functions prints the information about the particular event by calling relevant function                    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();            }        } catch (Exception ex) {            ex.printStackTrace();        }        long endtime = System.currentTimeMillis();        System.out.println(" Parsing Time = " + (endtime - starttime));    }    /**     * Returns the String representation of the given integer constant.     *     * @param eventType Type of event.     * @return String representation of the event     */    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(                    "<?xml version=\"" + xmlr.getVersion() + "\""                    + " encoding=\"" + xmlr.getCharacterEncodingScheme() + "\""                    + "?>");        }    }    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(                    "<?" + xmlr.getPITarget() + " " + xmlr.getPIData() + "?>");        }    }    private static void printStartElement(XMLStreamReader xmlr) {        if (xmlr.isStartElement()) {            System.out.print("<" + xmlr.getName().toString());            printAttributes(xmlr);            System.out.print(">");        }    }    private static void printEndElement(XMLStreamReader xmlr) {        if (xmlr.isEndElement()) {            System.out.print("</" + xmlr.getName().toString() + ">");        }    }    private static void printAttributes(XMLStreamReader xmlr) {        int count = xmlr.getAttributeCount();        if (count > 0) {            for (int i = 0; i < count; i++) {                System.out.print(" ");                System.out.print(xmlr.getAttributeName(i).toString());                System.out.print("=");                System.out.print("\"");                System.out.print(xmlr.getAttributeValue(i));                System.out.print("\"");            }        }        count = xmlr.getNamespaceCount();        if (count > 0) {            for (int i = 0; i < count; i++) {                System.out.print(" ");                System.out.print("xmlns");                if (xmlr.getNamespacePrefix(i) != null) {                    System.out.print(":" + xmlr.getNamespacePrefix(i));                }                System.out.print("=");                System.out.print("\"");                System.out.print(xmlr.getNamespaceURI(i));                System.out.print("\"");            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -