XmlStreamUtils.java Source code

Java tutorial

Introduction

Here is the source code for XmlStreamUtils.java

Source

/*   Copyright 2004 The Apache Software Foundation
 *
 *   Licensed 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.
 */

// Revised from xml beans
import javax.xml.stream.XMLStreamReader;

/**
 * debugging utilities for XmlStreamReader
 */
public final class XmlStreamUtils {
    public static String printEvent(XMLStreamReader xmlr) {
        StringBuffer b = new StringBuffer();
        b.append("EVENT:[" + xmlr.getLocation().getLineNumber() + "][" + xmlr.getLocation().getColumnNumber()
                + "] ");
        b.append(getName(xmlr.getEventType()));
        b.append(" [");
        switch (xmlr.getEventType()) {
        case XMLStreamReader.START_ELEMENT:
            b.append("<");
            printName(xmlr, b);
            for (int i = 0; i < xmlr.getNamespaceCount(); i++) {
                b.append(" ");
                String n = xmlr.getNamespacePrefix(i);
                if ("xmlns".equals(n)) {
                    b.append("xmlns=\"" + xmlr.getNamespaceURI(i) + "\"");
                } else {
                    b.append("xmlns:" + n);
                    b.append("=\"");
                    b.append(xmlr.getNamespaceURI(i));
                    b.append("\"");
                }
            }

            for (int i = 0; i < xmlr.getAttributeCount(); i++) {
                b.append(" ");
                printName(xmlr.getAttributePrefix(i), xmlr.getAttributeNamespace(i), xmlr.getAttributeLocalName(i),
                        b);
                b.append("=\"");
                b.append(xmlr.getAttributeValue(i));
                b.append("\"");
            }

            b.append(">");
            break;
        case XMLStreamReader.END_ELEMENT:
            b.append("</");
            printName(xmlr, b);
            for (int i = 0; i < xmlr.getNamespaceCount(); i++) {
                b.append(" ");
                String n = xmlr.getNamespacePrefix(i);
                if ("xmlns".equals(n)) {
                    b.append("xmlns=\"" + xmlr.getNamespaceURI(i) + "\"");
                } else {
                    b.append("xmlns:" + n);
                    b.append("=\"");
                    b.append(xmlr.getNamespaceURI(i));
                    b.append("\"");
                }
            }
            b.append(">");
            break;
        case XMLStreamReader.SPACE:
        case XMLStreamReader.CHARACTERS:
            // b.append(xmlr.getText());
            int start = xmlr.getTextStart();
            int length = xmlr.getTextLength();
            b.append(new String(xmlr.getTextCharacters(), start, length));
            break;
        case XMLStreamReader.PROCESSING_INSTRUCTION:
            String target = xmlr.getPITarget();
            if (target == null)
                target = "";
            String data = xmlr.getPIData();
            if (data == null)
                data = "";
            b.append("<?");
            b.append(target + " " + data);
            b.append("?>");
            break;
        case XMLStreamReader.CDATA:
            b.append("<![CDATA[");
            if (xmlr.hasText())
                b.append(xmlr.getText());
            b.append("]]&gt;");
            break;

        case XMLStreamReader.COMMENT:
            b.append("<!--");
            if (xmlr.hasText())
                b.append(xmlr.getText());
            b.append("-->");
            break;
        case XMLStreamReader.ENTITY_REFERENCE:
            b.append(xmlr.getLocalName() + "=");
            if (xmlr.hasText())
                b.append("[" + xmlr.getText() + "]");
            break;
        case XMLStreamReader.START_DOCUMENT:
            b.append("<?xml");
            b.append(" version='" + xmlr.getVersion() + "'");
            b.append(" encoding='" + xmlr.getCharacterEncodingScheme() + "'");
            if (xmlr.isStandalone())
                b.append(" standalone='yes'");
            else
                b.append(" standalone='no'");
            b.append("?>");
            break;

        }
        b.append("]");
        return b.toString();
    }

    private static void printName(String prefix, String uri, String localName, StringBuffer b) {
        if (uri != null && !("".equals(uri)))
            b.append("['" + uri + "']:");
        if (prefix != null && !("".equals(prefix)))
            b.append(prefix + ":");
        if (localName != null)
            b.append(localName);
    }

    private static void printName(XMLStreamReader xmlr, StringBuffer b) {
        if (xmlr.hasName()) {
            String prefix = xmlr.getPrefix();
            String uri = xmlr.getNamespaceURI();
            String localName = xmlr.getLocalName();
            printName(prefix, uri, localName, b);
        }
    }

    public static String getName(int eventType) {
        switch (eventType) {
        case XMLStreamReader.START_ELEMENT:
            return "START_ELEMENT";
        case XMLStreamReader.END_ELEMENT:
            return "END_ELEMENT";
        case XMLStreamReader.PROCESSING_INSTRUCTION:
            return "PROCESSING_INSTRUCTION";
        case XMLStreamReader.CHARACTERS:
            return "CHARACTERS";
        case XMLStreamReader.SPACE:
            return "SPACE";
        case XMLStreamReader.COMMENT:
            return "COMMENT";
        case XMLStreamReader.START_DOCUMENT:
            return "START_DOCUMENT";
        case XMLStreamReader.END_DOCUMENT:
            return "END_DOCUMENT";
        case XMLStreamReader.ENTITY_REFERENCE:
            return "ENTITY_REFERENCE";
        case XMLStreamReader.ATTRIBUTE:
            return "ATTRIBUTE";
        case XMLStreamReader.DTD:
            return "DTD";
        case XMLStreamReader.CDATA:
            return "CDATA";
        case XMLStreamReader.NAMESPACE:
            return "NAMESPACE";
        }
        return "UNKNOWN_EVENT_TYPE";
    }

    public static int getType(String val) {
        if (val.equals("START_ELEMENT"))
            return XMLStreamReader.START_ELEMENT;
        if (val.equals("SPACE"))
            return XMLStreamReader.SPACE;
        if (val.equals("END_ELEMENT"))
            return XMLStreamReader.END_ELEMENT;
        if (val.equals("PROCESSING_INSTRUCTION"))
            return XMLStreamReader.PROCESSING_INSTRUCTION;
        if (val.equals("CHARACTERS"))
            return XMLStreamReader.CHARACTERS;
        if (val.equals("COMMENT"))
            return XMLStreamReader.COMMENT;
        if (val.equals("START_DOCUMENT"))
            return XMLStreamReader.START_DOCUMENT;
        if (val.equals("END_DOCUMENT"))
            return XMLStreamReader.END_DOCUMENT;
        if (val.equals("ATTRIBUTE"))
            return XMLStreamReader.ATTRIBUTE;
        if (val.equals("DTD"))
            return XMLStreamReader.DTD;
        if (val.equals("CDATA"))
            return XMLStreamReader.CDATA;
        if (val.equals("NAMESPACE"))
            return XMLStreamReader.NAMESPACE;
        return -1;
    }

}