001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one
003: * or more contributor license agreements. See the NOTICE file
004: * distributed with this work for additional information
005: * regarding copyright ownership. The ASF licenses this file
006: * to you under the Apache License, Version 2.0 (the
007: * "License"); you may not use this file except in compliance
008: * with the License. You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing,
013: * software distributed under the License is distributed on an
014: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015: * KIND, either express or implied. See the License for the
016: * specific language governing permissions and limitations
017: * under the License.
018: */
019:
020: package org.apache.axis2.databinding.utils;
021:
022: import javax.xml.stream.XMLStreamConstants;
023: import javax.xml.stream.XMLStreamException;
024: import javax.xml.stream.XMLStreamReader;
025:
026: public class PrintEvents {
027:
028: public static void print(XMLStreamReader xmlr)
029: throws XMLStreamException {
030: while (xmlr.hasNext()) {
031: printEvent(xmlr);
032: xmlr.next();
033: }
034: }
035:
036: private static void printEvent(XMLStreamReader xmlr) {
037:
038: System.out.print("EVENT:["
039: + getEventString(xmlr.getEventType()) + "] ");
040:
041: System.out.print(" [");
042:
043: switch (xmlr.getEventType()) {
044:
045: case XMLStreamConstants.START_ELEMENT:
046: System.out.print("<");
047: printName(xmlr);
048: printNamespaces(xmlr);
049: printAttributes(xmlr);
050: System.out.print(">");
051: break;
052:
053: case XMLStreamConstants.END_ELEMENT:
054: System.out.print("</");
055: printName(xmlr);
056: System.out.print(">");
057: break;
058:
059: case XMLStreamConstants.SPACE:
060:
061: case XMLStreamConstants.CHARACTERS:
062: int start = xmlr.getTextStart();
063: int length = xmlr.getTextLength();
064: System.out.print(new String(xmlr.getTextCharacters(),
065: start, length));
066: break;
067:
068: case XMLStreamConstants.PROCESSING_INSTRUCTION:
069: System.out.print("<?");
070: if (xmlr.hasText())
071: System.out.print(xmlr.getText());
072: System.out.print("?>");
073: break;
074:
075: case XMLStreamConstants.CDATA:
076: System.out.print("<![CDATA[");
077: start = xmlr.getTextStart();
078: length = xmlr.getTextLength();
079: System.out.print(new String(xmlr.getTextCharacters(),
080: start, length));
081: System.out.print("]]>");
082: break;
083:
084: case XMLStreamConstants.COMMENT:
085: System.out.print("<!--");
086: if (xmlr.hasText())
087: System.out.print(xmlr.getText());
088: System.out.print("-->");
089: break;
090:
091: case XMLStreamConstants.ENTITY_REFERENCE:
092: System.out.print(xmlr.getLocalName() + "=");
093: if (xmlr.hasText())
094: System.out.print("[" + xmlr.getText() + "]");
095: break;
096:
097: case XMLStreamConstants.START_DOCUMENT:
098: System.out.print("<?xml");
099: System.out.print(" version='" + xmlr.getVersion() + "'");
100: System.out.print(" encoding='"
101: + xmlr.getCharacterEncodingScheme() + "'");
102: if (xmlr.isStandalone())
103: System.out.print(" standalone='yes'");
104: else
105: System.out.print(" standalone='no'");
106: System.out.print("?>");
107: break;
108:
109: }
110: System.out.println("]");
111: }
112:
113: private static void printName(XMLStreamReader xmlr) {
114: if (xmlr.hasName()) {
115: String prefix = xmlr.getPrefix();
116: String uri = xmlr.getNamespaceURI();
117: String localName = xmlr.getLocalName();
118: printName(prefix, uri, localName);
119: }
120: }
121:
122: private static void printName(String prefix, String uri,
123: String localName) {
124: if (uri != null && !("".equals(uri)))
125: System.out.print("['" + uri + "']:");
126: if (prefix != null)
127: System.out.print(prefix + ":");
128: if (localName != null)
129: System.out.print(localName);
130: }
131:
132: private static void printAttributes(XMLStreamReader xmlr) {
133: for (int i = 0; i < xmlr.getAttributeCount(); i++) {
134: printAttribute(xmlr, i);
135: }
136: }
137:
138: private static void printAttribute(XMLStreamReader xmlr, int index) {
139: String prefix = xmlr.getAttributePrefix(index);
140: String namespace = xmlr.getAttributeNamespace(index);
141: String localName = xmlr.getAttributeLocalName(index);
142: String value = xmlr.getAttributeValue(index);
143: System.out.print(" ");
144: printName(prefix, namespace, localName);
145: System.out.print("='" + value + "'");
146: }
147:
148: private static void printNamespaces(XMLStreamReader xmlr) {
149: for (int i = 0; i < xmlr.getNamespaceCount(); i++) {
150: printNamespace(xmlr, i);
151: }
152: }
153:
154: private static void printNamespace(XMLStreamReader xmlr, int index) {
155: String prefix = xmlr.getNamespacePrefix(index);
156: String uri = xmlr.getNamespaceURI(index);
157: System.out.print(" ");
158: if (prefix == null)
159: System.out.print("xmlns='" + uri + "'");
160: else
161: System.out.print("xmlns:" + prefix + "='" + uri + "'");
162: }
163:
164: private static String getEventString(int eventCode) {
165: String event = "";
166:
167: switch (eventCode) {
168: case 1:
169: event = "START_ELEMENT";
170: break;
171: case 2:
172: event = "END_ELEMENT";
173: break;
174: case 3:
175: event = "PROCESSING_INSTRUCTION";
176: break;
177: case 4:
178: event = "CHARACTERS";
179: break;
180: case 5:
181: event = "COMMENT";
182: break;
183: case 6:
184: event = "SPACE";
185: break;
186: case 7:
187: event = "START_DOCUMENT";
188: break;
189: case 8:
190: event = "END_DOCUMENT";
191: break;
192: case 9:
193: event = "ENTITY_REFERENCE";
194: break;
195: case 10:
196: event = "ATTRIBUTE";
197: break;
198: case 11:
199: event = "DTD";
200: break;
201: case 12:
202: event = "CDATA";
203: break;
204: case 13:
205: event = "NAMESPACE";
206: break;
207: case 14:
208: event = "NOTATION_DECLARATION";
209: break;
210: case 15:
211: event = "ENTITY_DECLARATION";
212: break;
213: }
214: return event;
215: }
216:
217: }
|