View Javadoc

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