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