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

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

Introduction

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

Prototype

public boolean isCharacters();

Source Link

Document

A utility function to check if this event is Characters.

Usage

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

private static Result parseHdrLatencyProbeResult(XMLEventReader reader) throws XMLStreamException {
    String encodedData = null;/*from   ww w.j a va  2s.c  om*/
    while (reader.hasNext()) {
        XMLEvent xmlEvent = reader.nextEvent();
        if (xmlEvent.isCharacters()) {
            encodedData = xmlEvent.asCharacters().getData();
        } else if (xmlEvent.isEndElement()) {
            EndElement endElement = xmlEvent.asEndElement();
            if (!HDR_LATENCY_DATA.matches(endElement.getName().getLocalPart()) || encodedData == null) {
                throw new XMLStreamException("Unexpected end element " + endElement.getName());
            }
            try {
                byte[] bytes = Base64.decodeBase64(encodedData);
                Histogram histogram = Histogram.decodeFromCompressedByteBuffer(ByteBuffer.wrap(bytes), 0);
                return new HdrLatencyDistributionResult(histogram);
            } catch (DataFormatException e) {
                throw new RuntimeException(e);
            }
        }
    }
    throw new XMLStreamException("Unexpected end of stream");
}

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 += " ";
    }//  w  w  w  .  ja v  a 2  s  .  c o  m
    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:de.dfki.km.leech.parser.wikipedia.WikipediaDumpParser.java

/**
 * Reads all next character events from an xmlEventReader and concatenate their data into one String
 * /* ww w .j  av  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: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 {//ww  w.  j  a  v a  2 s  . c  o 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  ava 2 s.  c  om
    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:Main.java

public static String getXMLContent(XMLEventReader reader, StartElement element, boolean decodeCharacters)
        throws XMLStreamException {
    String rootElementName = getLocalName(element);

    StringWriter buffer = new StringWriter(1024);

    StartElement pendingElement = null;
    String pendingElementName = null;

    while (reader.hasNext()) {
        XMLEvent event = reader.nextEvent();

        if (pendingElement != null) {
            boolean skip = false;

            if (event.isEndElement() && pendingElementName.equals(getLocalName(event.asEndElement()))) {
                writeAsEncodedUnicode(pendingElement, buffer, true); // empty tag
                skip = true; // skip this end tag
            } else {
                writeAsEncodedUnicode(pendingElement, buffer, false);
            }//from ww w .j av a2s  .c o  m

            pendingElement = null;
            pendingElementName = null;

            if (skip)
                continue;
        }

        if (event.isEndElement()) {
            EndElement endElement = event.asEndElement();
            String name = getLocalName(endElement);

            if (rootElementName.equals(name))
                return buffer.toString();

            writeAsEncodedUnicode(endElement, buffer);
        } else if (event.isStartElement()) {
            pendingElement = event.asStartElement();
            pendingElementName = getLocalName(pendingElement);
        } else if (event.isCharacters() && decodeCharacters) {
            buffer.append(event.asCharacters().getData());
        } else {
            event.writeAsEncodedUnicode(buffer);
        }
    }

    throw new XMLStreamException(format("Missing closing tag for '" + rootElementName + "' element", element));
}

From source file:com.streamsets.pipeline.lib.xml.StreamingXmlParser.java

@SuppressWarnings("unchecked")
Field parse(XMLEventReader reader, StartElement startE) throws XMLStreamException, ObjectLengthException {
    Map<String, Field> map = this.useFieldAttributesInsteadOfFields ? new LinkedHashMap<>() : toField(startE);
    Map<String, Field> startEMap = map;
    Map<String, Object> contents = new LinkedHashMap<>();
    boolean maybeText = true;
    while (hasNext(reader) && !peek(reader).isEndElement()) {
        XMLEvent next = read(reader);
        if (next.isCharacters()) {
            // If this set of characters is all whitespace, ignore.
            if (next.asCharacters().isWhiteSpace()) {
                continue;
            } else if (peek(reader).isEndElement() && maybeText) {
                contents.put(VALUE_KEY, Field.create(((Characters) next).getData()));
            } else if (peek(reader).isStartElement()) {
                StartElement subStartE = (StartElement) read(reader);
                Field subField = parse(reader, subStartE);
                addContent(contents, getName(subStartE), subField);
                if (hasNext(reader) && peek(reader).isCharacters()) {
                    read(reader);/*from   ww w . j  a v  a2 s .  co m*/
                }
            } else if (maybeText) {
                throw new XMLStreamException(Utils
                        .format("Unexpected XMLEvent '{}', it should be START_ELEMENT or END_ELEMENT", next),
                        next.getLocation());
            }
        } else if (next.isStartElement()) {
            String name = getName((StartElement) next);
            Field field = parse(reader, (StartElement) next);
            addContent(contents, name, field);
        } else {
            throw new XMLStreamException(
                    Utils.format("Unexpected XMLEvent '{}', it should be START_ELEMENT or CHARACTERS", next),
                    next.getLocation());
        }
        maybeText = false;
    }
    if (hasNext(reader)) {
        EndElement endE = (EndElement) read(reader);
        if (!endE.getName().equals(startE.getName())) {
            throw new XMLStreamException(Utils.format("Unexpected EndElement '{}', it should be '{}'",
                    endE.getName().getLocalPart(), startE.getName().getLocalPart()), endE.getLocation());
        }
        for (Map.Entry<String, Object> entry : contents.entrySet()) {
            if (entry.getValue() instanceof Field) {
                startEMap.put(entry.getKey(), (Field) entry.getValue());
            } else {
                startEMap.put(entry.getKey(), Field.create((List<Field>) entry.getValue()));
            }
        }
    }
    final Field field = Field.create(startEMap);

    if (this.useFieldAttributesInsteadOfFields) {
        Iterator attrs = startE.getAttributes();
        while (attrs.hasNext()) {
            Attribute attr = (Attribute) attrs.next();
            field.setAttribute(getName(XMLATTR_ATTRIBUTE_PREFIX, attr), attr.getValue());
        }
        Iterator nss = startE.getNamespaces();
        while (nss.hasNext()) {
            Namespace ns = (Namespace) nss.next();
            field.setAttribute(getName(null, ns), ns.getNamespaceURI());
        }
    }

    lastParsedFieldXpathPrefix = getXpathPrefix();
    return field;
}

From source file:edu.jhu.hlt.concrete.ingesters.bolt.BoltForumPostIngester.java

private int handleQuote(final XMLEventReader rdr) throws XMLStreamException {
    // For quotes, there will be character contents - skip for now...
    XMLEvent quoteContent = rdr.nextEvent();
    if (!quoteContent.isCharacters())
        throw new RuntimeException("Characters did not follow quote.");
    // Skip end of quote.
    XMLEvent next = rdr.nextEvent();
    // Exit loop only when next end quote is hit.
    boolean hitEndQuoteElement = false;
    while (!next.isEndElement() && !hitEndQuoteElement) {
        // Move to next element.
        next = rdr.nextEvent();//from   ww w. j ava2s  .c  om
        // If next element is an end element,
        // see if it's an end quote.
        // If so, exit the loop.
        if (next.isEndElement())
            hitEndQuoteElement = next.asEndElement().getName().getLocalPart().equals("quote");
    }

    return next.getLocation().getCharacterOffset();
}

From source file:edu.jhu.hlt.concrete.ingesters.bolt.BoltForumPostIngester.java

private int handleLink(final XMLEventReader rdr) throws XMLStreamException {
    // Links have a start element, characters, and end element.
    // Alternatively, they have a start and end element.
    XMLEvent linkContent = rdr.nextEvent();
    if (linkContent.isEndElement())
        return linkContent.getLocation().getCharacterOffset();
    else if (linkContent.isCharacters())
        // Skip end of link.
        return rdr.nextEvent().getLocation().getCharacterOffset();
    else/*from w  w w. j  a  va2s.c om*/
        throw new RuntimeException("Characters did not follow link.");
}

From source file:ca.uhn.fhir.jpa.dao.BaseHapiFhirDao.java

private static String parseNarrativeTextIntoWords(IBaseResource theResource) {

    StringBuilder b = new StringBuilder();
    if (theResource instanceof IResource) {
        IResource resource = (IResource) theResource;
        List<XMLEvent> xmlEvents = resource.getText().getDiv().getValue();
        if (xmlEvents != null) {
            for (XMLEvent next : xmlEvents) {
                if (next.isCharacters()) {
                    Characters characters = next.asCharacters();
                    b.append(characters.getData()).append(" ");
                }//from   w w  w .java  2s.  c  o  m
            }
        }
    } else if (theResource instanceof IDomainResource) {
        IDomainResource resource = (IDomainResource) theResource;
        try {
            String divAsString = resource.getText().getDivAsString();
            XhtmlDt xhtml = new XhtmlDt(divAsString);
            List<XMLEvent> xmlEvents = xhtml.getValue();
            if (xmlEvents != null) {
                for (XMLEvent next : xmlEvents) {
                    if (next.isCharacters()) {
                        Characters characters = next.asCharacters();
                        b.append(characters.getData()).append(" ");
                    }
                }
            }
        } catch (Exception e) {
            throw new DataFormatException("Unable to convert DIV to string", e);
        }

    }
    return b.toString();
}