Example usage for javax.xml.stream.events XMLEvent asCharacters

List of usage examples for javax.xml.stream.events XMLEvent asCharacters

Introduction

In this page you can find the example usage for javax.xml.stream.events XMLEvent asCharacters.

Prototype

public Characters asCharacters();

Source Link

Document

Returns this event as Characters, may result in a class cast exception if this event is not Characters.

Usage

From source file:Main.java

private static String flattenXmlRecord(final String xmlRecord) throws XMLStreamException {
    StringBuilder flatXmlRecord = new StringBuilder();
    XMLEventReader eventReader = inFactory.createXMLEventReader(new StringReader(xmlRecord));
    while (eventReader.hasNext()) {
        XMLEvent event = eventReader.nextEvent();
        if (event.getEventType() != XMLEvent.START_ELEMENT) {
            continue;
        }// w  w w  . ja  v  a  2 s. c o  m
        String elementName = event.asStartElement().getName().getLocalPart();
        event = eventReader.nextEvent();
        if (event.getEventType() != XMLEvent.CHARACTERS) {
            continue;
        }
        if (event.asCharacters().getData().trim().isEmpty()) {
            continue;
        }
        flatXmlRecord.append(elementName + ", " + event.asCharacters().getData() + "\n");

    }
    return flatXmlRecord.toString();
}

From source file:com.hazelcast.simulator.probes.probes.ProbesResultXmlReader.java

private static String parseCharsAndEndCurrentElement(XMLEventReader reader) throws XMLStreamException {
    XMLEvent xmlEvent = reader.nextEvent();
    if (!xmlEvent.isCharacters()) {
        throw new XMLStreamException("Unexpected event " + xmlEvent);
    }//from   w w  w.ja va 2s  .  c o  m
    String data = xmlEvent.asCharacters().getData();
    while (reader.hasNext()) {
        xmlEvent = reader.nextEvent();
        if (xmlEvent.isEndElement()) {
            return data;
        }
    }
    throw new XMLStreamException("Unexpected end of the document");
}

From source file:Main.java

private static String printEvents(XMLEvent start, XMLEventReader xml, int indent) throws XMLStreamException {
    String ret = "\n";
    for (int i = 0; i < indent; i++) {
        ret += " ";
    }/*from  www  . j  av a  2s . com*/
    ret += start + "\n";

    XMLEvent next = null;
    // Keep processing events...
    while (xml.hasNext()) {
        next = xml.nextEvent();
        // Delegate start tags to a new indentation level
        if (next.isStartElement()) {
            printEvents(next, xml, indent + 4);
        } else if (next.isEndElement()) {
            // We've found our end element. Add it and be done.
            for (int i = 0; i < indent; i++) {
                ret += " ";
            }
            ret += next + "\n";
            return ret;
        } else if (next.isCharacters() && next.asCharacters().isWhiteSpace()) {
            // Skip whitespace
            continue;
        } else {
            // Print the contents of this tag
            for (int i = 0; i < indent + 4; i++) {
                ret += " ";
            }
            ret += next + "\n";
        }
    }
    // Oh wow, we ran out of XML. Uh, return then?
    return ret;
}

From source file:Main.java

/**
 * Compares two {@link XMLEvent} instances. This method delegates actual
 * matching to the appropriate overloaded method.
 * /*from   w  ww .j ava 2  s  .co  m*/
 * @param a
 *            The first event.
 * @param b
 *            The second event.
 * @return <code>true</code> if the events match, <code>false</code>
 *         otherwise.
 */
public static boolean eventsMatch(XMLEvent a, XMLEvent b) {

    if (a == b) {

        return true;

    } else if (a == null || b == null) {

        return false;

    } else if (a.getEventType() == b.getEventType()) {

        switch (a.getEventType()) {

        case XMLEvent.START_ELEMENT:
            return eventsMatch(a.asStartElement(), b.asStartElement());

        case XMLEvent.END_ELEMENT:
            return eventsMatch(a.asEndElement(), b.asEndElement());

        case XMLEvent.CDATA:
        case XMLEvent.SPACE:
        case XMLEvent.CHARACTERS:
            return eventsMatch(a.asCharacters(), b.asCharacters());

        case XMLEvent.COMMENT:
            return eventsMatch((Comment) a, (Comment) b);

        case XMLEvent.ENTITY_REFERENCE:
            return eventsMatch((EntityReference) a, (EntityReference) b);

        case XMLEvent.ATTRIBUTE:
            return eventsMatch((Attribute) a, (Attribute) b);

        case XMLEvent.NAMESPACE:
            return eventsMatch((Namespace) a, (Namespace) b);

        case XMLEvent.START_DOCUMENT:
            return eventsMatch((StartDocument) a, (StartDocument) b);

        case XMLEvent.END_DOCUMENT:
            return eventsMatch((EndDocument) a, (EndDocument) b);

        case XMLEvent.PROCESSING_INSTRUCTION:
            return eventsMatch((ProcessingInstruction) a, (ProcessingInstruction) b);

        case XMLEvent.DTD:
            return eventsMatch((DTD) a, (DTD) b);

        case XMLEvent.ENTITY_DECLARATION:
            return eventsMatch((EntityDeclaration) a, (EntityDeclaration) b);

        case XMLEvent.NOTATION_DECLARATION:
            return eventsMatch((NotationDeclaration) a, (NotationDeclaration) b);

        }

    }

    return false;

}

From source file:de.dfki.km.leech.parser.wikipedia.WikipediaDumpParser.java

/**
 * Reads all next character events from an xmlEventReader and concatenate their data into one String
 * //from  ww w  .  j  a  v a  2  s  . c  o  m
 * @param xmlEventReader the xmlEventReader to get the events
 * 
 * @return the data of the character events, concatenated into one String
 * 
 * @throws XMLStreamException
 */
static protected String readNextCharEventsText(XMLEventReader xmlEventReader) throws XMLStreamException {
    StringBuilder strbText = new StringBuilder("");

    while (xmlEventReader.hasNext()) {
        XMLEvent nextEvent = xmlEventReader.peek();
        if (!nextEvent.isCharacters())
            break;

        nextEvent = xmlEventReader.nextEvent();
        strbText.append(nextEvent.asCharacters().getData());
    }

    return strbText.toString();
}

From source file:Main.java

/**
 * //w w  w .  ja  v  a 2 s . co  m
 * @param elementName
 * @param is
 * @param onlyValues
 * @return Collection
 * @throws XMLStreamException
 * @throws UnsupportedEncodingException
 */
public static Collection<String> getElements(final String elementName, final InputStream is,
        final boolean onlyValues) throws XMLStreamException, UnsupportedEncodingException {
    final Collection<String> elements = new ArrayList<>();
    final ByteArrayOutputStream os = new ByteArrayOutputStream();
    final XMLEventReader reader = XMLInputFactory.newInstance()
            .createXMLEventReader(new InputStreamReader(is, Charset.defaultCharset().name()));
    final XMLEventWriter writer = XMLOutputFactory.newInstance()
            .createXMLEventWriter(new OutputStreamWriter(os, Charset.defaultCharset().name()));
    boolean read = false;
    String characters = null;

    while (reader.peek() != null) {
        final XMLEvent event = (XMLEvent) reader.next();

        switch (event.getEventType()) {
        case XMLStreamConstants.START_DOCUMENT:
        case XMLStreamConstants.END_DOCUMENT: {
            // Ignore.
            break;
        }
        case XMLStreamConstants.START_ELEMENT: {
            read = read || elementName.equals(event.asStartElement().getName().getLocalPart());

            if (read && !onlyValues) {
                writer.add(event);
            }

            break;
        }
        case XMLStreamConstants.ATTRIBUTE: {
            if (read && !onlyValues) {
                writer.add(event);
            }
            break;
        }
        case XMLStreamConstants.CHARACTERS: {
            if (read && !onlyValues) {
                writer.add(event);
            }
            characters = event.asCharacters().getData();
            break;
        }
        case XMLStreamConstants.END_ELEMENT: {
            if (read && !onlyValues) {
                writer.add(event);
            }
            if (elementName.equals(event.asEndElement().getName().getLocalPart())) {
                writer.flush();

                if (characters != null) {
                    elements.add(characters);
                }

                os.reset();
                read = false;
            }
            break;
        }
        default: {
            // Ignore
            break;
        }
        }
    }

    return elements;
}

From source file:Main.java

/**
 * /*from  w  w w  . j  a v a2 s .  c o m*/
 * @param elementName
 * @param attributeValue
 * @param is
 * @return Collection
 * @throws XMLStreamException
 * @throws FactoryConfigurationError
 * @throws UnsupportedEncodingException
 */
public static Collection<String> getElementValues(final String elementName, final String attributeValue,
        final InputStream is)
        throws XMLStreamException, UnsupportedEncodingException, FactoryConfigurationError {
    final Collection<String> elementValues = new ArrayList<>();
    final XMLEventReader xmlEventReader = XMLInputFactory.newInstance()
            .createXMLEventReader(new InputStreamReader(is, Charset.defaultCharset().name()));
    final StringBuffer characters = new StringBuffer();
    boolean read = false;

    while (xmlEventReader.peek() != null) {
        final XMLEvent event = (XMLEvent) xmlEventReader.next();

        switch (event.getEventType()) {
        case XMLStreamConstants.START_DOCUMENT:
        case XMLStreamConstants.END_DOCUMENT: {
            // Ignore.
            break;
        }
        case XMLStreamConstants.START_ELEMENT: {
            read = elementName.equals(event.asStartElement().getName().getLocalPart());

            if (read && attributeValue != null) {
                read = false;

                for (Iterator<Attribute> iterator = event.asStartElement().getAttributes(); iterator
                        .hasNext();) {
                    Attribute attribute = iterator.next();

                    if (attribute.getValue().equals(attributeValue)) {
                        read = true;
                        break;
                    }
                }
            }

            break;
        }
        case XMLStreamConstants.CHARACTERS: {
            if (read) {
                characters.append(event.asCharacters().getData());
            }
            break;
        }
        case XMLStreamConstants.END_ELEMENT: {
            if (read) {
                elementValues.add(characters.toString());
                characters.setLength(0);
            }

            read = false;
            break;
        }
        default: {
            // Ignore
            break;
        }
        }
    }

    return elementValues;
}

From source file:com.msopentech.odatajclient.testservice.utils.XMLUtilities.java

public static InputStream getAtomPropertyValue(final InputStream is, final String[] path) throws Exception {
    final XmlElement props = getAtomElement(is, PROPERTIES, 2, 3);
    final XMLEventReader propsReader = props.getContentReader();

    // search for property start element
    getPropertyStartTag(propsReader, ArrayUtils.subarray(path, 0, path.length - 1));

    final InputStream res;

    XMLEvent event = propsReader.nextEvent();

    // expected text node
    if (event.isCharacters()) {
        res = new ByteArrayInputStream(event.asCharacters().getData().getBytes());
    } else if (event.isEndElement()) {
        throw new NotFoundException();
    } else {/*from   ww w. jav a2 s  .  co  m*/
        throw new Exception("The method or operation is not implemented.");
    }

    return res;
}

From source file:org.eclipse.swordfish.core.configuration.xml.XmlToPropertiesTransformerImpl.java

public void loadConfiguration(URL path) {
    Assert.notNull(path);/*ww w  .  j ava2s  .  c  o m*/
    InputStream inputStream = null;
    try {
        inputStream = path.openStream();
        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
        LinkedList<String> currentElements = new LinkedList<String>();
        XMLEventReader eventReader = inputFactory.createXMLEventReader(inputStream);
        Map<String, List<String>> props = new HashMap<String, List<String>>();
        // Read the XML document
        while (eventReader.hasNext()) {
            XMLEvent event = eventReader.nextEvent();
            if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
                putElement(props, getQualifiedName(currentElements), event.asCharacters().getData());

            } else if (event.isStartElement()) {
                currentElements.add(event.asStartElement().getName().getLocalPart());
                for (Iterator attrIt = event.asStartElement().getAttributes(); attrIt.hasNext();) {
                    Attribute attribute = (Attribute) attrIt.next();
                    putElement(props, getQualifiedName(currentElements) + "[@" + attribute.getName() + "]",
                            attribute.getValue());

                }
            } else if (event.isAttribute()) {
            } else if (event.isEndElement()) {
                String lastElem = event.asEndElement().getName().getLocalPart();
                if (!currentElements.getLast().equals(lastElem)) {
                    throw new UnsupportedOperationException(lastElem + "," + currentElements.getLast());
                }
                currentElements.removeLast();
            }
        }
        properties = flattenProperties(props);
    } catch (Exception ex) {
        throw new SwordfishException(ex);
    } finally {
        if (inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException ex) {
            }
        }
    }
}

From source file:corpus.sinhala.crawler.blog.rss.RSSFeedParser.java

private String getCharacterData(XMLEvent event, XMLEventReader eventReader) throws XMLStreamException {
    String result = "";
    event = eventReader.nextEvent();//from  ww w .  j av a  2  s  . c  o  m
    if (event instanceof Characters) {
        result = event.asCharacters().getData();
    }
    return result;
}