1 package com.bea.xml.stream.samples;
2
3 import com.bea.xml.stream.util.ElementTypeNames;
4 import java.io.FileReader;
5 import java.util.Iterator;
6 import javax.xml.stream.*;
7 import javax.xml.stream.events.*;
8
9 /***
10 * @author Copyright (c) 2002 by BEA Systems. All Rights Reserved.
11 */
12
13 public class Parse {
14
15 private static String filename = null;
16
17 private static void printUsage() {
18 System.out.println("usage: java com.bea.xml.stream.samples.Parse <xmlfile>");
19 }
20
21 public static void main(String[] args) throws Exception {
22
23 try {
24 filename = args[0];
25 } catch (ArrayIndexOutOfBoundsException aioobe){
26 printUsage();
27 System.exit(0);
28 }
29
30 System.setProperty("javax.xml.stream.XMLInputFactory",
31 "com.bea.xml.stream.MXParserFactory");
32
33 XMLInputFactory xmlif = XMLInputFactory.newInstance();
34 System.out.println("FACTORY: " + xmlif);
35
36 XMLStreamReader xmlr = xmlif.createXMLStreamReader(new FileReader(filename));
37 System.out.println("READER: " + xmlr + "\n");
38
39 int eventType = xmlr.getEventType();
40 System.out.println("PARSER STATE BEFORE FIRST next(): ");
41 printEventType(eventType);
42 printName(xmlr);
43 printValue(xmlr);
44 System.out.println("-----------------------------");
45
46 while(xmlr.hasNext()){
47 eventType = xmlr.next();
48 printEventType(eventType);
49 printName(xmlr);
50 printValue(xmlr);
51 if(xmlr.isStartElement()){
52 printAttributes(xmlr);
53 printNamespaces(xmlr);
54 }
55 System.out.println("-----------------------------");
56 }
57
58
59 }
60
61 public final static String getEventTypeString(int eventType) {
62 return ElementTypeNames.getEventTypeString(eventType);
63 }
64
65 private static void printEventType(int eventType) {
66 System.out.print("EVENT TYPE("+eventType+"):");
67 System.out.println(getEventTypeString(eventType));
68 }
69
70 private static void printName(XMLStreamReader xmlr){
71 if(xmlr.hasName()){
72 System.out.println("HAS NAME: " + xmlr.getLocalName());
73 } else {
74 System.out.println("HAS NO NAME");
75 }
76 }
77
78 private static void printValue(XMLStreamReader xmlr){
79 if(xmlr.hasText()){
80 System.out.println("HAS VALUE: " + xmlr.getText());
81 } else {
82 System.out.println("HAS NO VALUE");
83 }
84 }
85
86 private static void printAttributes(XMLStreamReader xmlr){
87 if(xmlr.getAttributeCount()>0){
88 System.out.println("\nHAS ATTRIBUTES: ");
89 Iterator ai =
90 com.bea.xml.stream.XMLEventAllocatorBase.getAttributes(xmlr);
91 while(ai.hasNext()){
92 Attribute a = (Attribute) ai.next();
93 System.out.println("");
94 printAttribute((Attribute) a);
95 }
96 } else {
97 System.out.println("HAS NO ATTRIBUTES");
98 }
99 }
100
101 private static void printAttribute(Attribute a) {
102 System.out.println("PREFIX: " + a.getName().getPrefix());
103 System.out.println("NAMESP: " + a.getName().getNamespaceURI());
104 System.out.println("NAME: " + a.getName().getLocalPart());
105 System.out.println("VALUE: " + a.getValue());
106 System.out.println("TYPE: " + a.getDTDType());
107 }
108
109 private static void printNamespaces(XMLStreamReader xmlr){
110 if(xmlr.getNamespaceCount()>0){
111 System.out.println("\nHAS NAMESPACES: ");
112 Iterator ni =
113 com.bea.xml.stream.XMLEventAllocatorBase.getNamespaces(xmlr);
114 while(ni.hasNext()){
115 Namespace n = (Namespace) ni.next();
116 System.out.println("");
117 printNamespace((Namespace)n);
118 }
119 } else {
120 System.out.println("HAS NO NAMESPACES");
121 }
122 }
123
124 private static void printNamespace(Namespace a) {
125 System.out.println("PREFIX: " + a.getName().getPrefix());
126 System.out.println("NAMESP: " + a.getName().getNamespaceURI());
127 System.out.println("NAME: " + a.getName().getLocalPart());
128 System.out.println("VALUE: " + a.getValue());
129 System.out.println("TYPE: " + a.getDTDType());
130 }
131 }
132
133
134
135