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

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

Introduction

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

Prototype

public boolean isEndElement();

Source Link

Document

A utility function to check if this event is a EndElement.

Usage

From source file:org.qi4j.valueserialization.stax.StaxValueDeserializer.java

@Override
protected <T> Collection<T> readArrayInCollection(XMLEventReader input,
        Function<XMLEventReader, T> deserializer, Collection<T> collection) throws Exception {
    if (!input.hasNext()) {
        return null;
    }//from   w  ww. ja va 2  s . c  o  m
    XMLEvent nextTag = input.nextTag();
    if (nextTag.isStartElement() && "null".equals(nextTag.asStartElement().getName().getLocalPart())) {
        input.nextTag();
        return null;
    }
    if (!nextTag.isStartElement() || !"array".equals(nextTag.asStartElement().getName().getLocalPart())) {
        throw new ValueSerializationException("Expected an <array/> but got: " + nextTag);
    }
    WHILE: while (input.hasNext()) {
        XMLEvent currentTag = input.nextTag();
        if (currentTag.isEndElement()) {
            String endElementName = currentTag.asEndElement().getName().getLocalPart();
            switch (endElementName) {
            case "array":
                break WHILE;
            case "value":
                continue;
            }
        }
        if (!"value".equals(currentTag.asStartElement().getName().getLocalPart())) {
            throw new ValueSerializationException("Expected a <value/> but got: " + currentTag);
        }
        T item = deserializer.map(input);
        collection.add(item);
    }
    return collection;
}

From source file:org.qi4j.valueserialization.stax.StaxValueDeserializer.java

@Override
protected <K, V> Map<K, V> readMapInMap(XMLEventReader input, Function<XMLEventReader, K> keyDeserializer,
        Function<XMLEventReader, V> valueDeserializer, Map<K, V> map) throws Exception {
    if (!input.hasNext()) {
        return null;
    }//from  w w w. jav  a2  s  .  co  m
    XMLEvent nextTag = input.nextTag();
    if (nextTag.isStartElement() && "null".equals(nextTag.asStartElement().getName().getLocalPart())) {
        input.nextTag();
        return null;
    }
    if (!nextTag.isStartElement() || !"array".equals(nextTag.asStartElement().getName().getLocalPart())) {
        throw new ValueSerializationException("Expected an <array/> but got: " + nextTag);
    }
    XMLEvent currentTag = input.nextTag(); // <object>
    while (!currentTag.isEndElement() || !"array".equals(currentTag.asEndElement().getName().getLocalPart())) {
        if (!currentTag.isStartElement()
                || !"object".equals(currentTag.asStartElement().getName().getLocalPart())) {
            throw new ValueSerializationException("Expected an <object/> but got: " + nextTag);
        }
        currentTag = input.nextTag(); // <field>
        K key = null;
        V value = null;
        while (!currentTag.isEndElement()
                || !"object".equals(currentTag.asEndElement().getName().getLocalPart())) {
            input.nextTag(); // <name>
            String keyOrValue = input.nextEvent().asCharacters().getData();
            input.nextTag(); // </name>
            input.nextTag(); // <value>
            switch (keyOrValue) {
            case "key":
                key = keyDeserializer.map(input);
                break;
            case "value":
                value = valueDeserializer.map(input);
                break;
            default:
                readObjectTree(input);
                break;
            }
            input.nextTag(); // </value>
            input.nextTag(); // </field>
            currentTag = input.nextTag();
        }
        if (key != null) {
            map.put(key, value);
        }
        currentTag = input.nextTag();
    }
    return map;
}

From source file:org.qi4j.valueserialization.stax.StaxValueDeserializer.java

private static String readElementBody(XMLEventReader input) throws XMLStreamException {
    StringWriter buf = new StringWriter(1024);
    int depth = 0;
    while (input.hasNext()) {
        // peek event
        XMLEvent xmlEvent = input.peek();
        if (xmlEvent.isStartElement()) {
            ++depth;//  ww w.j  a  va  2 s . c o  m
        } else if (xmlEvent.isEndElement()) {
            --depth;
            // reached END_ELEMENT tag?
            // break loop, leave event in stream
            if (depth < 0) {
                break;
            }
        }
        // consume event
        xmlEvent = input.nextEvent();
        // print out event
        xmlEvent.writeAsEncodedUnicode(buf);
    }
    return buf.getBuffer().toString();
}

From source file:org.sakaiproject.nakamura.auth.cas.CasAuthenticationHandler.java

private String retrieveCredentials(String responseBody) {
    String username = null;//from   w  ww  . jav a  2s .c  o m
    String pgtIou = null;
    String failureCode = null;
    String failureMessage = null;

    try {
        XMLInputFactory xmlInputFactory = new WstxInputFactory();
        xmlInputFactory.setProperty(XMLInputFactory.IS_COALESCING, true);
        xmlInputFactory.setProperty(XMLInputFactory.IS_VALIDATING, false);
        xmlInputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, true);
        XMLEventReader eventReader = xmlInputFactory.createXMLEventReader(new StringReader(responseBody));

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

            // process the event if we're starting an element
            if (event.isStartElement()) {
                StartElement startEl = event.asStartElement();
                QName startElName = startEl.getName();
                String startElLocalName = startElName.getLocalPart();
                LOGGER.debug(responseBody);

                /*
                 * Example of failure XML
                <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
                  <cas:authenticationFailure code='INVALID_REQUEST'>
                    &#039;service&#039; and &#039;ticket&#039; parameters are both required
                  </cas:authenticationFailure>
                </cas:serviceResponse>
                */
                if ("authenticationFailure".equalsIgnoreCase(startElLocalName)) {
                    // get code of the failure
                    Attribute code = startEl.getAttributeByName(QName.valueOf("code"));
                    failureCode = code.getValue();

                    // get the message of the failure
                    event = eventReader.nextEvent();
                    assert event.isCharacters();
                    Characters chars = event.asCharacters();
                    failureMessage = chars.getData();
                    break;
                }

                /*
                 * Example of success XML
                <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
                  <cas:authenticationSuccess>
                    <cas:user>NetID</cas:user>
                  </cas:authenticationSuccess>
                </cas:serviceResponse>
                */
                if ("authenticationSuccess".equalsIgnoreCase(startElLocalName)) {
                    // skip to the user tag start
                    while (eventReader.hasNext()) {
                        event = eventReader.nextTag();
                        if (event.isEndElement()) {
                            if (eventReader.hasNext()) {
                                event = eventReader.nextTag();
                            } else {
                                break;
                            }
                        }
                        assert event.isStartElement();
                        startEl = event.asStartElement();
                        startElName = startEl.getName();
                        startElLocalName = startElName.getLocalPart();
                        if (proxy && "proxyGrantingTicket".equals(startElLocalName)) {
                            event = eventReader.nextEvent();
                            assert event.isCharacters();
                            Characters chars = event.asCharacters();
                            pgtIou = chars.getData();
                            LOGGER.debug("XML parser found pgt: {}", pgtIou);
                        } else if ("user".equals(startElLocalName)) {
                            // move on to the body of the user tag
                            event = eventReader.nextEvent();
                            assert event.isCharacters();
                            Characters chars = event.asCharacters();
                            username = chars.getData();
                            LOGGER.debug("XML parser found user: {}", username);
                        } else {
                            LOGGER.error("Found unexpected element [{}] while inside 'authenticationSuccess'",
                                    startElName);
                            break;
                        }
                        if (username != null && (!proxy || pgtIou != null)) {
                            break;
                        }
                    }
                }
            }
        }
    } catch (XMLStreamException e) {
        LOGGER.error(e.getMessage(), e);
    }

    if (failureCode != null || failureMessage != null) {
        LOGGER.error("Error response from server code={} message={}", failureCode, failureMessage);
    }
    String pgt = pgts.get(pgtIou);
    if (pgt != null) {
        savePgt(username, pgt, pgtIou);
    } else {
        LOGGER.debug("Caching '{}' as the IOU for '{}'", pgtIou, username);
        pgtIOUs.put(pgtIou, username);
    }
    return username;
}

From source file:org.slc.sli.ingestion.parser.impl.EdfiRecordParserImpl.java

private void parseEntityEvent(XMLEvent e, String eventName) throws XMLStreamException {

    if (e.isStartElement()) {
        parseStartElement(e.asStartElement(), eventName);

    } else if (e.isCharacters()) {
        parseCharacters(e.asCharacters());

    } else if (e.isEndElement() && eventName.equals(complexTypeStack.peek().getLeft().getName())) {
        parseEndElement(e);/*from  www.  ja  va2 s. co m*/
    }
}

From source file:org.slc.sli.ingestion.parser.impl.EdfiRecordParserImpl.java

private static String extractTagName(XMLEvent e) {
    String result = "";
    if (e.isEndElement()) {
        result = e.asEndElement().getName().getLocalPart();
    } else if (e.isStartElement()) {
        result = e.asStartElement().getName().getLocalPart();
    }/*from  w  w w. ja v  a 2s .c o  m*/
    return result;
}

From source file:org.xmlsh.commands.internal.xml2json.java

private boolean parse(XMLEventReader reader, PrintWriter writer, boolean bComma) throws XMLStreamException,
        CoreException, UnsupportedEncodingException, IOException, TransformException, SaxonApiException {
    mLevel++;//from ww w.  j ava2s . c  o  m

    while (reader.hasNext()) {
        XMLEvent e = reader.nextEvent();
        if (e.isStartElement()) {
            StartElement start = e.asStartElement();
            QName name = start.getName();

            if (name.equals(kELEM_XJSON)) {
                if (mLevel != 1)
                    throw new UnexpectedException("XJSON element must be at document root");

                // Children become the new roots

                mLevel = 0;
                while (parse(reader, writer, bComma))
                    ;
                return false;

            } else if (name.equals(kELEM_FILE)) {
                if (!writeFile(start, reader, writer))
                    return false;

            }

            else if (bComma)
                writer.print(",");

            if (name.equals(kELEM_OBJECT))
                writeObject(start, reader, writer);
            else if (name.equals(kELEM_ARRAY))
                writeArray(start, reader, writer);
            else if (name.equals(kELEM_MEMBER))
                writeMember(start, reader, writer);
            else if (name.equals(kELEM_NUMBER))
                writeNumber(start, reader, writer);
            else if (name.equals(kELEM_BOOLEAN))
                writeBoolean(start, reader, writer);
            else if (name.equals(kELEM_NULL))
                writeNull(reader, writer);
            else if (name.equals(kELEM_STRING))
                writeString(start, reader, writer);
            else
                readToEnd(reader);

            mLevel--;
            return true;

        } else if (e.isEndElement()) {
            mLevel--;

            return false;
        }
    }
    mLevel--;
    return false;
}

From source file:org.xmlsh.commands.internal.xml2json.java

private byte[] serializeAsXML(XMLEventReader reader) throws XMLStreamException {

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    XMLOutputFactory fact = new OutputFactory();

    XMLEventWriter writer = fact.createXMLEventWriter(bos, kENCODING_UTF_8);
    while (reader.hasNext()) {
        XMLEvent event = reader.nextEvent();

        if (event.isEndElement() && event.asEndElement().getName().equals(kELEM_STRING))
            break;
        writer.add(event);//  ww  w  .  ja v  a  2s.  c om
    }

    writer.flush();
    writer.close();
    return bos.toByteArray();

}

From source file:org.xmlsh.commands.internal.xml2json.java

private byte[] serializeAsString(XMLEventReader reader)
        throws XMLStreamException, UnsupportedEncodingException, IOException {

    ByteArrayOutputStream bos = new ByteArrayOutputStream();

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

        if (event.isEndElement() && event.asEndElement().getName().equals(kELEM_STRING))
            break;
        if (event.isCharacters())
            bos.write(event.asCharacters().getData().getBytes("UTF-8"));
    }//from  ww w  .  j a va2  s  .  c  o  m

    return bos.toByteArray();

}

From source file:org.zuinnote.hadoop.office.format.common.parser.msexcel.internal.XSSFPullParser.java

public Object[] getNext() throws XMLStreamException, FormatNotUnderstoodException {
    Object[] result = null;/*www .  j a  v  a 2 s .  c o m*/
    if (!this.nextBeingCalled) { // skip to the next tag

        if (this.hasNext() == false) {

            return null;
        }
    }
    if (this.finalized) { // no more to read
        return null;
    }
    // check
    ArrayList<SpreadSheetCellDAO> cells = new ArrayList<>();
    if (this.currentRow == this.nextRow) { // only if we have a row to report
        // read through row, cf.
        // http://download.microsoft.com/download/3/E/3/3E3435BD-AA68-4B32-B84D-B633F0D0F90D/SpreadsheetMLBasics.ppt
        int currentCellCount = 0;
        while (this.xer.hasNext()) {
            XMLEvent xe = xer.nextEvent();
            // read+
            if (xe.isEndElement()) {
                if (xe.asEndElement().getName().getLocalPart().equalsIgnoreCase("row")) {
                    break; // end of row
                }
            } else if (xe.isStartElement()) {
                if (xe.asStartElement().getName().getLocalPart().equalsIgnoreCase("c")) {

                    Attribute cellAddressAT = xe.asStartElement().getAttributeByName(new QName("r"));
                    // check if cell is a subsequent cell and add null, if needed
                    CellAddress currentCellAddress = new CellAddress(cellAddressAT.getValue());
                    for (int i = currentCellCount; i < currentCellAddress.getColumn(); i++) {
                        cells.add(null);
                        currentCellCount++;
                    }
                    currentCellCount++; // current cell
                    Attribute cellTypeTAT = xe.asStartElement().getAttributeByName(new QName("t"));
                    Attribute cellTypeSAT = xe.asStartElement().getAttributeByName(new QName("s"));
                    String cellFormattedValue = "";
                    String cellFormula = "";
                    String cellAddress = cellAddressAT.getValue();

                    String cellComment = "";
                    String cellSheetName = this.sheetName;

                    while ((!xe.isEndElement()) || !((xe.isEndElement())
                            && (xe.asEndElement().getName().getLocalPart().equalsIgnoreCase("c")))) {
                        xe = xer.nextEvent();
                        if ((xe.isStartElement())
                                && (xe.asStartElement().getName().getLocalPart().equalsIgnoreCase("v"))) {
                            // if a cell data type is set (e.g. b boolean (covered?), d date in ISO8601 format, e
                            // error, inlineStr (covered), n number (covered), s shared string (covered), str formula string (covered)
                            // we return as string
                            if (cellTypeTAT != null) {
                                XMLEvent xeSubCharacters = xer.nextEvent();
                                if (!xeSubCharacters.isCharacters()) {
                                    LOG.error(
                                            "Error parsing excel file. Value attribute (v) of cell does not contains characters");
                                } else {
                                    cellFormattedValue = xeSubCharacters.asCharacters().getData();

                                    if (XSSFPullParser.CELLTYPE_STRING.equals(cellTypeTAT.getValue())) { // need to
                                        // read
                                        // from
                                        // Shared
                                        // String
                                        // Table
                                        int strIdx = Integer.valueOf(cellFormattedValue);
                                        if ((this.sst != null) && (this.sst.getCount() > strIdx)) {
                                            cellFormattedValue = this.sst.getItemAt(strIdx).getString();
                                        } else {
                                            cellFormattedValue = "";
                                        }
                                    } else if (XSSFPullParser.CELLTYPE_NUMBER.equals(cellTypeTAT.getValue())) {
                                        // need to read number and format it (e.g. if it is a date etc.) according
                                        // to style
                                        int strStyleIdx = Integer.valueOf(cellTypeSAT.getValue());
                                        XSSFCellStyle cellStyle = this.styles.getStyleAt(strStyleIdx);
                                        cellFormattedValue = this.dataFormatter.formatRawCellContents(
                                                Double.valueOf(cellFormattedValue), cellStyle.getDataFormat(),
                                                cellStyle.getDataFormatString(), this.isDate1904);
                                    }

                                }
                            } else {
                                LOG.error("Cannot read celltype");
                            }
                        } else if ((xe.isStartElement())
                                && (xe.asStartElement().getName().getLocalPart().equalsIgnoreCase("f"))) {
                            // read formula
                            XMLEvent xeSubCharacters = xer.nextEvent();

                            if (!xeSubCharacters.isCharacters()) {
                                LOG.error(
                                        "Error parsing excel file. Formula attribute (f) of cell does not contains characters");
                            } else {
                                cellFormula = xeSubCharacters.asCharacters().getData();
                            }
                        } else if ((xe.isStartElement())
                                && (xe.asStartElement().getName().getLocalPart().equalsIgnoreCase("is"))) {
                            // read inline string
                            cellFormattedValue = this.parseCellInlineStringText(xer);
                        }
                    }
                    cells.add(new SpreadSheetCellDAO(cellFormattedValue, cellComment, cellFormula, cellAddress,
                            cellSheetName));

                }
            }
            // else ignore (e.g. col)
        }
    }

    // convert to array
    result = new SpreadSheetCellDAO[cells.size()];
    result = cells.toArray(result);
    // read all cells in row and create SpreadSheetCellDAOs
    this.nextBeingCalled = false;
    this.currentRow++;
    return result;
}