1 package examples.basic; 2 3 import java.io.FileReader ; 4 import java.util.Iterator ; 5 import javax.xml.stream.*; 6 import javax.xml.namespace.QName ; 7 import com.bea.xml.stream.util.ElementTypeNames; 8 9 15 16 17 public class Parse { 18 private static String filename = null; 19 20 private static void printUsage() { 21 System.out.println("usage: java examples.basic.Parse <xmlfile>"); 22 } 23 24 public static void main(String [] args) throws Exception { 25 try { 26 filename = args[0]; 27 } catch (ArrayIndexOutOfBoundsException aioobe){ 28 printUsage(); 29 System.exit(0); 30 } 31 32 System.setProperty("javax.xml.stream.XMLInputFactory", 36 "com.bea.xml.stream.MXParserFactory"); 37 38 XMLInputFactory xmlif = XMLInputFactory.newInstance(); 42 System.out.println("FACTORY: " + xmlif); 43 44 XMLStreamReader xmlr = xmlif.createXMLStreamReader(new FileReader (filename)); 48 System.out.println("READER: " + xmlr + "\n"); 49 50 while(xmlr.hasNext()){ 54 printEvent(xmlr); 55 xmlr.next(); 56 } 57 58 } 59 60 private static void printEvent(XMLStreamReader xmlr) { 61 System.out.print("EVENT:["+xmlr.getLocation().getLineNumber()+"]["+ 62 xmlr.getLocation().getColumnNumber()+"] "); 63 System.out.print(ElementTypeNames.getEventTypeString(xmlr.getEventType())); 64 System.out.print(" ["); 65 switch (xmlr.getEventType()) { 66 case XMLStreamConstants.START_ELEMENT: 67 System.out.print("<"); 68 printName(xmlr); 69 printNamespaces(xmlr); 70 printAttributes(xmlr); 71 System.out.print(">"); 72 break; 73 case XMLStreamConstants.END_ELEMENT: 74 System.out.print("</"); 75 printName(xmlr); 76 printNamespaces(xmlr); 77 System.out.print(">"); 78 break; 79 case XMLStreamConstants.SPACE: 80 case XMLStreamConstants.CHARACTERS: 81 int start = xmlr.getTextStart(); 82 int length = xmlr.getTextLength(); 83 System.out.print(new String (xmlr.getTextCharacters(), 84 start, 85 length)); 86 break; 87 case XMLStreamConstants.PROCESSING_INSTRUCTION: 88 System.out.print("<?"); 89 if (xmlr.hasText()) 90 System.out.print(xmlr.getText()); 91 System.out.print("?>"); 92 break; 93 case XMLStreamConstants.CDATA: 94 System.out.print("<![CDATA["); 95 start = xmlr.getTextStart(); 96 length = xmlr.getTextLength(); 97 System.out.print(new String (xmlr.getTextCharacters(), 98 start, 99 length)); 100 System.out.print("]]>"); 101 break; 102 103 case XMLStreamConstants.COMMENT: 104 System.out.print("<!--"); 105 if (xmlr.hasText()) 106 System.out.print(xmlr.getText()); 107 System.out.print("-->"); 108 break; 109 case XMLStreamConstants.ENTITY_REFERENCE: 110 System.out.print(xmlr.getLocalName()+"="); 111 if (xmlr.hasText()) 112 System.out.print("["+xmlr.getText()+"]"); 113 break; 114 case XMLStreamConstants.START_DOCUMENT: 115 System.out.print("<?xml"); 116 System.out.print(" version='"+xmlr.getVersion()+"'"); 117 System.out.print(" encoding='"+xmlr.getCharacterEncodingScheme()+"'"); 118 if (xmlr.isStandalone()) 119 System.out.print(" standalone='yes'"); 120 else 121 System.out.print(" standalone='no'"); 122 System.out.print("?>"); 123 break; 124 125 } 126 System.out.println("]"); 127 } 128 129 private static void printEventType(int eventType) { 130 System.out.print("EVENT TYPE("+eventType+"):"); 131 System.out.println(ElementTypeNames.getEventTypeString(eventType)); 132 } 133 134 private static void printName(XMLStreamReader xmlr){ 135 if(xmlr.hasName()){ 136 String prefix = xmlr.getPrefix(); 137 String uri = xmlr.getNamespaceURI(); 138 String localName = xmlr.getLocalName(); 139 printName(prefix,uri,localName); 140 } 141 } 142 143 private static void printName(String prefix, 144 String uri, 145 String localName) { 146 if (uri != null && !("".equals(uri)) ) System.out.print("['"+uri+"']:"); 147 if (prefix != null) System.out.print(prefix+":"); 148 if (localName != null) System.out.print(localName); 149 } 150 151 private static void printAttributes(XMLStreamReader xmlr){ 152 153 for (int i=0; i < xmlr.getAttributeCount(); i++) { 154 printAttribute(xmlr,i); 155 } 156 } 157 158 private static void printAttribute(XMLStreamReader xmlr, int index) { 159 String prefix = xmlr.getAttributePrefix(index); 160 String namespace = xmlr.getAttributeNamespace(index); 161 String localName = xmlr.getAttributeLocalName(index); 162 String value = xmlr.getAttributeValue(index); 163 System.out.print(" "); 164 printName(prefix,namespace,localName); 165 System.out.print("='"+value+"'"); 166 167 } 168 169 private static void printNamespaces(XMLStreamReader xmlr){ 170 for (int i=0; i < xmlr.getNamespaceCount(); i++) { 171 printNamespace(xmlr,i); 172 } 173 } 174 175 private static void printNamespace(XMLStreamReader xmlr, int index) { 176 String prefix = xmlr.getNamespacePrefix(index); 177 String uri = xmlr.getNamespaceURI(index); 178 System.out.print(" "); 179 if (prefix == null) 180 System.out.print("xmlns='"+uri+"'"); 181 else 182 System.out.print("xmlns:"+prefix+"='"+uri+"'"); 183 } 184 } 185 | Popular Tags |