/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.axis2.databinding.utils; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; public class PrintEvents { public static void print(XMLStreamReader xmlr) throws XMLStreamException { while (xmlr.hasNext()) { printEvent(xmlr); xmlr.next(); } } private static void printEvent(XMLStreamReader xmlr) { System.out.print("EVENT:[" + getEventString(xmlr.getEventType()) + "] "); System.out.print(" ["); switch (xmlr.getEventType()) { case XMLStreamConstants.START_ELEMENT: System.out.print("<"); printName(xmlr); printNamespaces(xmlr); printAttributes(xmlr); System.out.print(">"); break; case XMLStreamConstants.END_ELEMENT: System.out.print("</"); printName(xmlr); System.out.print(">"); break; case XMLStreamConstants.SPACE: case XMLStreamConstants.CHARACTERS: int start = xmlr.getTextStart(); int length = xmlr.getTextLength(); System.out.print(new String(xmlr.getTextCharacters(), start, length)); break; case XMLStreamConstants.PROCESSING_INSTRUCTION: System.out.print("<?"); if (xmlr.hasText()) System.out.print(xmlr.getText()); System.out.print("?>"); break; case XMLStreamConstants.CDATA: System.out.print("<![CDATA["); start = xmlr.getTextStart(); length = xmlr.getTextLength(); System.out.print(new String(xmlr.getTextCharacters(), start, length)); System.out.print("]]>"); break; case XMLStreamConstants.COMMENT: System.out.print("<!--"); if (xmlr.hasText()) System.out.print(xmlr.getText()); System.out.print("-->"); break; case XMLStreamConstants.ENTITY_REFERENCE: System.out.print(xmlr.getLocalName() + "="); if (xmlr.hasText()) System.out.print("[" + xmlr.getText() + "]"); break; case XMLStreamConstants.START_DOCUMENT: System.out.print("<?xml"); System.out.print(" version='" + xmlr.getVersion() + "'"); System.out.print(" encoding='" + xmlr.getCharacterEncodingScheme() + "'"); if (xmlr.isStandalone()) System.out.print(" standalone='yes'"); else System.out.print(" standalone='no'"); System.out.print("?>"); break; } System.out.println("]"); } private static void printName(XMLStreamReader xmlr) { if (xmlr.hasName()) { String prefix = xmlr.getPrefix(); String uri = xmlr.getNamespaceURI(); String localName = xmlr.getLocalName(); printName(prefix, uri, localName); } } private static void printName(String prefix, String uri, String localName) { if (uri != null && !("".equals(uri))) System.out.print("['" + uri + "']:"); if (prefix != null) System.out.print(prefix + ":"); if (localName != null) System.out.print(localName); } private static void printAttributes(XMLStreamReader xmlr) { for (int i = 0; i < xmlr.getAttributeCount(); i++) { printAttribute(xmlr, i); } } private static void printAttribute(XMLStreamReader xmlr, int index) { String prefix = xmlr.getAttributePrefix(index); String namespace = xmlr.getAttributeNamespace(index); String localName = xmlr.getAttributeLocalName(index); String value = xmlr.getAttributeValue(index); System.out.print(" "); printName(prefix, namespace, localName); System.out.print("='" + value + "'"); } private static void printNamespaces(XMLStreamReader xmlr) { for (int i = 0; i < xmlr.getNamespaceCount(); i++) { printNamespace(xmlr, i); } } private static void printNamespace(XMLStreamReader xmlr, int index) { String prefix = xmlr.getNamespacePrefix(index); String uri = xmlr.getNamespaceURI(index); System.out.print(" "); if (prefix == null) System.out.print("xmlns='" + uri + "'"); else System.out.print("xmlns:" + prefix + "='" + uri + "'"); } private static String getEventString(int eventCode) { String event = ""; switch (eventCode) { case 1 : event = "START_ELEMENT"; break; case 2 : event = "END_ELEMENT"; break; case 3 : event = "PROCESSING_INSTRUCTION"; break; case 4 : event = "CHARACTERS"; break; case 5 : event = "COMMENT"; break; case 6 : event = "SPACE"; break; case 7 : event = "START_DOCUMENT"; break; case 8 : event = "END_DOCUMENT"; break; case 9 : event = "ENTITY_REFERENCE"; break; case 10 : event = "ATTRIBUTE"; break; case 11 : event = "DTD"; break; case 12 : event = "CDATA"; break; case 13 : event = "NAMESPACE"; break; case 14 : event = "NOTATION_DECLARATION"; break; case 15 : event = "ENTITY_DECLARATION"; break; } return event; } }