KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > examples > basic > Parse


1 package examples.basic;
2
3 import java.io.FileReader JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import javax.xml.stream.*;
6 import javax.xml.namespace.QName JavaDoc;
7 import com.bea.xml.stream.util.ElementTypeNames;
8
9 /**
10  * This is a simple parsing example that illustrates
11  * the XMLStreamReader class.
12  *
13  * @author Copyright (c) 2003 by BEA Systems. All Rights Reserved.
14  */

15
16
17 public class Parse {
18   private static String JavaDoc 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 JavaDoc[] args) throws Exception JavaDoc {
25     try {
26       filename = args[0];
27     } catch (ArrayIndexOutOfBoundsException JavaDoc aioobe){
28       printUsage();
29       System.exit(0);
30     }
31
32     //
33
// Set the factory to the RI
34
//
35
System.setProperty("javax.xml.stream.XMLInputFactory",
36                        "com.bea.xml.stream.MXParserFactory");
37     
38     //
39
// Get an input factory
40
//
41
XMLInputFactory xmlif = XMLInputFactory.newInstance();
42     System.out.println("FACTORY: " + xmlif);
43
44     //
45
// Instantiate a reader
46
//
47
XMLStreamReader xmlr = xmlif.createXMLStreamReader(new FileReader JavaDoc(filename));
48     System.out.println("READER: " + xmlr + "\n");
49     
50     //
51
// Parse the XML
52
//
53
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 JavaDoc(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 JavaDoc(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 JavaDoc prefix = xmlr.getPrefix();
137       String JavaDoc uri = xmlr.getNamespaceURI();
138       String JavaDoc localName = xmlr.getLocalName();
139       printName(prefix,uri,localName);
140     }
141   }
142
143   private static void printName(String JavaDoc prefix,
144                                 String JavaDoc uri,
145                                 String JavaDoc 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 JavaDoc prefix = xmlr.getAttributePrefix(index);
160     String JavaDoc namespace = xmlr.getAttributeNamespace(index);
161     String JavaDoc localName = xmlr.getAttributeLocalName(index);
162     String JavaDoc 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 JavaDoc prefix = xmlr.getNamespacePrefix(index);
177     String JavaDoc 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