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

📄 mystreamfilter.java

📁 java 的关于web serive教程
💻 JAVA
字号:
package filter;import java.io.*;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;import javax.xml.stream.*;import javax.xml.stream.events.* ;import java.util.Date;import javax.xml.namespace.QName;/** * MyStreamFilter sample is used to demonstrates the use * of STAX stream filter api's. This filter accepts only  * StartElement and EndElement events and filters out rest of * the events. */public class MyStreamFilter implements javax.xml.stream.StreamFilter{        private static String filename = null;            private static void printUsage() {        System.out.println("usage: java -classpath MyStreamFilter -f <xmlfile>");    }        /**     *      * @param args      * @throws Exception      */    public static void main(String[] args) throws Exception {                        try {            if(args[0].equals("-f")){                filename = 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);            xmlif.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE , Boolean.TRUE);            xmlif.setProperty(XMLInputFactory.IS_COALESCING , Boolean.TRUE);        }catch(Exception ex){            ex.printStackTrace();        }        System.out.println("FACTORY: " + xmlif);        System.out.println("filename = "+ filename);                                try{                        FileInputStream fis = new FileInputStream(filename);                        XMLStreamReader xmlr = xmlif.createFilteredReader(xmlif.createXMLStreamReader(fis), new MyStreamFilter());                        int eventType = xmlr.getEventType();            printEventType(eventType);            while(xmlr.hasNext()){                eventType = xmlr.next();                printEventType(eventType);                printName(xmlr,eventType);                printText(xmlr);                if(xmlr.isStartElement()){                    printAttributes(xmlr);                }                printPIData(xmlr);                System.out.println("-----------------------------");            }                    }catch(Exception ex){            ex.printStackTrace();        }            }        /**     * @param eventType     * @return     */    public final static 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";        }        return "UNKNOWN_EVENT_TYPE";    }        private static void printEventType(int eventType) {        System.out.print("EVENT TYPE("+eventType+"):");        System.out.println(getEventTypeString(eventType));    }        private static void printName(XMLStreamReader xmlr,int eventType){        if(xmlr.hasName()){            System.out.println("HAS NAME: " + xmlr.getLocalName());        } else {            System.out.println("HAS NO NAME");        }    }        private static void printText(XMLStreamReader xmlr){        if(xmlr.hasText()){            System.out.println("HAS TEXT: " + xmlr.getText());        } else {            System.out.println("HAS NO TEXT");        }    }        private static void printPIData(XMLStreamReader xmlr){        if (xmlr.getEventType() == XMLEvent.PROCESSING_INSTRUCTION){            System.out.println(" PI target = " + xmlr.getPITarget() ) ;            System.out.println(" PI Data = " + xmlr.getPIData() ) ;        }    }        private static void printAttributes(XMLStreamReader xmlr){        if(xmlr.getAttributeCount() > 0){            System.out.println("\nHAS ATTRIBUTES: ");            int count = xmlr.getAttributeCount() ;            for(int i = 0 ; i < count ; i++) {                                QName name = xmlr.getAttributeName(i) ;                String namespace = xmlr.getAttributeNamespace(i) ;                String  type = xmlr.getAttributeType(i) ;                String prefix = xmlr.getAttributePrefix(i) ;                String value = xmlr.getAttributeValue(i) ;                                System.out.println("ATTRIBUTE-PREFIX: " + prefix );                System.out.println("ATTRIBUTE-NAMESP: " + namespace );                System.out.println("ATTRIBUTE-NAME:   " + name.toString() );                System.out.println("ATTRIBUTE-VALUE:  " + value );                System.out.println("ATTRIBUTE-TYPE:  " + type );                System.out.println();                            }                    } else {            System.out.println("HAS NO ATTRIBUTES");        }    }        /**     * Accept only StartElement and EndElement events,Filters out rest of the events.     * @param reader      * @return      */    public boolean accept(XMLStreamReader reader) {        if(!reader.isStartElement() && !reader.isEndElement())            return false;        else            return true;    }}

⌨️ 快捷键说明

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