1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import java.io.*; import java.util.Iterator; import javax.xml.namespace.QName; import javax.xml.stream.*; import javax.xml.stream.events.*; public class ParseByEvent { public static void main(String[] args) throws FileNotFoundException, XMLStreamException { // Use the reference implementation for the XML input factory System.setProperty("javax.xml.stream.XMLInputFactory", "com.bea.xml.stream.MXParserFactory"); // Create the XML input factory XMLInputFactory factory = XMLInputFactory.newInstance(); // Create the XML event reader FileReader reader = new FileReader("somefile.xml"); XMLEventReader r = factory.createXMLEventReader(reader); // Loop over XML input stream and process events while(r.hasNext()) { XMLEvent e = r.next(); processEvent(e); } } /** * Process a single XML event * @param e - the event to be processed */ private static void processEvent(XMLEvent e) { if (e.isStartElement()) { QName qname = ((StartElement) e).getName(); String namespaceURI = qname.getNamespaceURI(); String localName = qname.getLocalPart(); Iterator iter = ((StartElement) e).getAttributes(); while (iter.hasNext()) { Attribute attr = (Attribute) iter.next(); QName attributeName = attr.getName(); String attributeValue = attr.getValue(); } } if (e.isEndElement()) { QName qname = ((EndElement) e).getName(); } if (e.isCharacters()) { String text = ((Characters) e).getData(); } if (e.isStartDocument()) { String version = ((StartDocument) e).getVersion(); String encoding = ((StartDocument) e).getCharacterEncodingScheme(); boolean isStandAlone = ((StartDocument) e).isStandalone(); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | import java.io.*; import javax.xml.stream.*; public class ParseByIterator { public static void main(String[] args) throws FileNotFoundException, XMLStreamException { // Use reference implementation System.setProperty( "javax.xml.stream.XMLInputFactory", "com.bea.xml.stream.MXParserFactory"); // Create an input factory XMLInputFactory xmlif = XMLInputFactory.newInstance(); // Create an XML stream reader XMLStreamReader xmlr = xmlif.createXMLStreamReader(new FileReader("somefile.xml")); // Loop over XML input stream and process events while (xmlr.hasNext()) { processEvent(xmlr); xmlr.next(); } } /** * Process a single event * @param xmlr - the XML stream reader */ private static void processEvent(XMLStreamReader xmlr) { switch (xmlr.getEventType()) { case XMLStreamConstants.START_ELEMENT : processName(xmlr); processAttributes(xmlr); break; case XMLStreamConstants.END_ELEMENT : processName(xmlr); break; case XMLStreamConstants.SPACE : case XMLStreamConstants.CHARACTERS : int start = xmlr.getTextStart(); int length = xmlr.getTextLength(); String text = new String(xmlr.getTextCharacters(), start, length); break; case XMLStreamConstants.COMMENT : case XMLStreamConstants.PROCESSING_INSTRUCTION : if (xmlr.hasText()) { String piOrComment = xmlr.getText(); } break; } } private static void processName(XMLStreamReader xmlr) { if (xmlr.hasName()) { String prefix = xmlr.getPrefix(); String uri = xmlr.getNamespaceURI(); String localName = xmlr.getLocalName(); } } private static void processAttributes(XMLStreamReader xmlr) { for (int i = 0; i < xmlr.getAttributeCount(); i++) processAttribute(xmlr, i); } private static void processAttribute(XMLStreamReader xmlr, int index) { String prefix = xmlr.getAttributePrefix(index); String namespace = xmlr.getAttributeNamespace(index); String localName = xmlr.getAttributeName(index); String value = xmlr.getAttributeValue(index); } } |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |