View Javadoc

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        //System.out.print(xmlr.getText());
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