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

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

Introduction

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

Prototype

public EndElement asEndElement();

Source Link

Document

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

Usage

From source file:org.apache.olingo.server.core.deserializer.xml.ODataXmlDeserializer.java

private EntityCollection entitySet(final XMLEventReader reader, final StartElement start,
        final EdmEntityType edmEntityType)
        throws XMLStreamException, EdmPrimitiveTypeException, DeserializerException {
    if (!Constants.QNAME_ATOM_ELEM_FEED.equals(start.getName())) {
        return null;
    }/*from w  w  w . j  ava  2s .  c  o m*/
    final EntityCollection entitySet = new EntityCollection();
    final Attribute xmlBase = start.getAttributeByName(Constants.QNAME_ATTR_XML_BASE);
    if (xmlBase != null) {
        entitySet.setBaseURI(URI.create(xmlBase.getValue()));
    }

    boolean foundEndFeed = false;
    while (reader.hasNext() && !foundEndFeed) {
        final XMLEvent event = reader.nextEvent();
        if (event.isStartElement()) {
            if (countQName.equals(event.asStartElement().getName())) {
                count(reader, event.asStartElement(), entitySet);
            } else if (Constants.QNAME_ATOM_ELEM_ID.equals(event.asStartElement().getName())) {
                common(reader, event.asStartElement(), entitySet, "id");
            } else if (Constants.QNAME_ATOM_ELEM_LINK.equals(event.asStartElement().getName())) {
                final Attribute rel = event.asStartElement()
                        .getAttributeByName(QName.valueOf(Constants.ATTR_REL));
                if (rel != null) {
                    if (Constants.NEXT_LINK_REL.equals(rel.getValue())) {
                        final Attribute href = event.asStartElement()
                                .getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
                        if (href != null) {
                            entitySet.setNext(URI.create(href.getValue()));
                        }
                    }
                    if (Constants.NS_DELTA_LINK_REL.equals(rel.getValue())) {
                        final Attribute href = event.asStartElement()
                                .getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
                        if (href != null) {
                            entitySet.setDeltaLink(URI.create(href.getValue()));
                        }
                    }
                }
            } else if (Constants.QNAME_ATOM_ELEM_ENTRY.equals(event.asStartElement().getName())) {
                entitySet.getEntities().add(entity(reader, event.asStartElement(), edmEntityType));
            } else if (entryRefQName.equals(event.asStartElement().getName())) {
                entitySet.getEntities().add(entityRef(event.asStartElement()));
            }
        }

        if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
            foundEndFeed = true;
        }
    }
    return entitySet;
}

From source file:org.apache.olingo.server.core.deserializer.xml.ODataXmlDeserializer.java

private void consumeParameters(final EdmAction edmAction, final XMLEventReader reader, final StartElement start,
        final Map<String, Parameter> parameters)
        throws DeserializerException, EdmPrimitiveTypeException, XMLStreamException {

    List<String> parameterNames = edmAction.getParameterNames();
    if (edmAction.isBound()) {
        // The binding parameter must not occur in the payload.
        parameterNames = parameterNames.subList(1, parameterNames.size());
    }/*from w ww.  ja v a2  s . c  om*/

    boolean foundEndElement = false;
    while (reader.hasNext() && !foundEndElement) {
        final XMLEvent event = reader.nextEvent();
        if (event.isStartElement()) {
            boolean found = false;
            for (String paramName : parameterNames) {
                if (paramName.equals(event.asStartElement().getName().getLocalPart())) {
                    found = true;
                    Parameter parameter = createParameter(reader, event.asStartElement(), paramName,
                            edmAction.getParameter(paramName));
                    Parameter previous = parameters.put(paramName, parameter);
                    if (previous != null) {
                        throw new DeserializerException("Duplicate property detected",
                                DeserializerException.MessageKeys.DUPLICATE_PROPERTY);
                    }
                    break; // for
                }
            }
            if (!found) {
                throw new DeserializerException(
                        "failed to read " + event.asStartElement().getName().getLocalPart(),
                        DeserializerException.MessageKeys.UNKNOWN_CONTENT);
            }
        }
        if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
            foundEndElement = true;
        }
    }
}

From source file:org.dataconservancy.model.builder.WrappingEventReaderTest.java

private void commonFileWrappingTest(XMLEventReader reader) throws XMLStreamException {
    assertTrue(reader.hasNext()); // START_ELEMENT File
    XMLEvent e = reader.nextEvent();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(E_FILE, e.asStartElement().getName().getLocalPart());

    assertTrue(reader.hasNext()); // START_ELEMENT doc
    e = reader.nextEvent();/*  w w w .j  a  va  2  s .  c o m*/
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals("doc", e.asStartElement().getName().getLocalPart());

    assertTrue(reader.hasNext()); // CHARACTERS
    e = reader.nextEvent();
    assertEquals(CHARACTERS, e.getEventType());

    assertTrue(reader.hasNext()); // END_ELEMENT doc
    e = reader.nextEvent();
    assertEquals(END_ELEMENT, e.getEventType());
    assertEquals("doc", e.asEndElement().getName().getLocalPart());

    assertTrue(reader.hasNext()); // END_ELEMENT File
    e = reader.nextEvent();
    assertEquals(END_ELEMENT, e.getEventType());
    assertEquals(E_FILE, e.asEndElement().getName().getLocalPart());
}

From source file:org.dataconservancy.model.builder.WrappingEventReaderTest.java

private void commonPeekFileTest(XMLEventReader reader) throws XMLStreamException {
    // The input XML is:
    // <File><doc> </doc></File>

    // <File>
    XMLEvent peekEvent = reader.peek();
    assertEquals(START_ELEMENT, peekEvent.getEventType());
    assertEquals(E_FILE, peekEvent.asStartElement().getName().getLocalPart());
    // idempotent
    assertEquals(peekEvent, reader.peek());
    XMLEvent actualEvent = reader.nextEvent();
    assertEquals(peekEvent, actualEvent);

    // <doc>
    peekEvent = reader.peek();/*  ww w.j  a  v  a2s.c  o m*/
    assertEquals(START_ELEMENT, peekEvent.getEventType());
    assertEquals("doc", peekEvent.asStartElement().getName().getLocalPart());
    // idempotent
    assertEquals(peekEvent, reader.peek());
    actualEvent = reader.nextEvent();
    assertEquals(peekEvent, actualEvent);

    peekEvent = reader.peek();
    assertEquals(CHARACTERS, peekEvent.getEventType());
    // idempotent
    assertEquals(peekEvent, reader.peek());
    actualEvent = reader.nextEvent();
    assertEquals(peekEvent, actualEvent);

    // </doc>
    peekEvent = reader.peek();
    assertEquals(END_ELEMENT, peekEvent.getEventType());
    assertEquals("doc", peekEvent.asEndElement().getName().getLocalPart());
    // idempotent
    assertEquals(peekEvent, reader.peek());
    actualEvent = reader.nextEvent();
    assertEquals(peekEvent, actualEvent);

    // </File>
    peekEvent = reader.peek();
    assertEquals(END_ELEMENT, peekEvent.getEventType());
    assertEquals(E_FILE, peekEvent.asEndElement().getName().getLocalPart());
    // idempotent
    assertEquals(peekEvent, reader.peek());
    actualEvent = reader.nextEvent();
    // fails, bc we are preserving namespaces? assertEquals(peekEvent, actualEvent);
    // do this instead
    assertEquals(peekEvent.asEndElement().getName().getLocalPart(),
            actualEvent.asEndElement().getName().getLocalPart());
}

From source file:org.eclipse.smila.utils.xml.stax.XmlSnippetSplitter.java

/**
 * Checks if the current tag is the end of a snippet.
 * /*from   ww w.  j ava 2 s .c o m*/
 * @param event
 *          the XMLEvent
 * @return true if the tag name and the start/end tag settings of the _end MarkerTag match the current events
 *         properties.
 */
private boolean isSnippetEnd(final XMLEvent event) {
    boolean condition = false;
    if (_end.isEndTag()) {
        condition = event.isEndElement();
    } else {
        condition = event.isStartElement();
    }
    return condition && _end.getName().equals(event.asEndElement().getName().getLocalPart());
}

From source file:org.mcisb.subliminal.SubliminalUtils.java

/**
 * //from   www  . j av a 2s.co  m
 * @param elementName
 * @param is
 * @param onlyValues
 * @return Collection
 * @throws XMLStreamException
 * @throws UnsupportedEncodingException
 */
private 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:org.mcisb.util.xml.XmlWriter.java

/**
 * //from  ww  w  .  j a  v a2  s. c  o m
 * 
 * @param event
 * @throws XMLStreamException
 */
protected void write(final XMLEvent event) throws XMLStreamException {
    if (event.isStartDocument()) {
        writeStartDocument();
    } else if (event.isEndDocument()) {
        writeEndDocument();
    } else if (event.isStartElement()) {
        writeStartElement(event.asStartElement());
    } else if (event.isEndElement()) {
        writeEndElement(event.asEndElement());
    } else if (event.isCharacters()) {
        if (event.asCharacters().getData().matches(WHITE_SPACE)) {
            // Ignore...
            return;
        }

        writeCharacters(event.asCharacters());
    }
}

From source file:org.omegat.util.TMXReader2.java

/**
 * External TMX - level 2. Replace all tags into shortcuts.
 */// w  w w  .j  a v a2s.  co m
protected void parseSegExtLevel2() throws Exception {
    segContent.setLength(0);
    segInlineTag.setLength(0);
    inlineTagHandler.reset();

    int inlineLevel = 0;
    while (true) {
        XMLEvent e = xml.nextEvent();
        switch (e.getEventType()) {
        case XMLEvent.START_ELEMENT:
            StartElement eStart = e.asStartElement();
            if ("hi".equals(eStart.getName().getLocalPart())) {
                // tag should be skipped
                break;
            }
            inlineLevel++;
            segInlineTag.setLength(0);
            if ("bpt".equals(eStart.getName().getLocalPart())) {
                inlineTagHandler.startBPT(getAttributeValue(eStart, "i"), getAttributeValue(eStart, "x"));
                inlineTagHandler.setTagShortcutLetter(
                        StringUtil.getFirstLetterLowercase(getAttributeValue(eStart, "type")));
            } else if ("ept".equals(eStart.getName().getLocalPart())) {
                inlineTagHandler.startEPT(getAttributeValue(eStart, "i"));
            } else if ("it".equals(eStart.getName().getLocalPart())) {
                inlineTagHandler.startOTHER();
                inlineTagHandler.setOtherTagShortcutLetter(
                        StringUtil.getFirstLetterLowercase(getAttributeValue(eStart, "type")));
                inlineTagHandler.setCurrentPos(getAttributeValue(eStart, "pos"));
            } else if ("ph".equals(eStart.getName().getLocalPart())) {
                inlineTagHandler.startOTHER();
                inlineTagHandler.setOtherTagShortcutLetter(
                        StringUtil.getFirstLetterLowercase(getAttributeValue(eStart, "type")));
            } else {
                inlineTagHandler.startOTHER();
            }
            break;
        case XMLEvent.END_ELEMENT:
            EndElement eEnd = e.asEndElement();
            if ("hi".equals(eEnd.getName().getLocalPart())) {
                // tag should be skipped
                break;
            }
            inlineLevel--;
            if ("seg".equals(eEnd.getName().getLocalPart())) {
                return;
            }
            boolean slashBefore = false;
            boolean slashAfter = false;
            int tagName = StringUtil.getFirstLetterLowercase(segInlineTag.toString());
            Integer tagN;
            if ("bpt".equals(eEnd.getName().getLocalPart())) {
                if (tagName != 0) {
                    inlineTagHandler.setTagShortcutLetter(tagName);
                } else {
                    tagName = inlineTagHandler.getTagShortcutLetter();
                }
                tagN = inlineTagHandler.endBPT();
            } else if ("ept".equals(eEnd.getName().getLocalPart())) {
                slashBefore = true;
                tagName = inlineTagHandler.getTagShortcutLetter();
                tagN = inlineTagHandler.endEPT();
            } else if ("it".equals(eEnd.getName().getLocalPart())) {
                if (tagName != 0) {
                    inlineTagHandler.setOtherTagShortcutLetter(tagName);
                } else {
                    tagName = inlineTagHandler.getOtherTagShortcutLetter();
                }
                tagN = inlineTagHandler.endOTHER();
                if ("end".equals(inlineTagHandler.getCurrentPos())) {
                    slashBefore = true;
                }
            } else if ("ph".equals(eEnd.getName().getLocalPart())) {
                if (tagName != 0) {
                    inlineTagHandler.setOtherTagShortcutLetter(tagName);
                } else {
                    tagName = inlineTagHandler.getOtherTagShortcutLetter();
                }
                tagN = inlineTagHandler.endOTHER();
                if (useSlash) {
                    slashAfter = true;
                }
            } else {
                tagN = inlineTagHandler.endOTHER();
                if (useSlash) {
                    slashAfter = true;
                }
            }
            if (tagName == 0) {
                tagName = 'f';
            }
            if (tagN == null) {
                // check error of TMX reading
                Log.logErrorRB("TMX_ERROR_READING_LEVEL2", e.getLocation().getLineNumber(),
                        e.getLocation().getColumnNumber());
                errorsCount++;
                segContent.setLength(0);
                // wait for end seg
                while (true) {
                    XMLEvent ev = xml.nextEvent();
                    switch (ev.getEventType()) {
                    case XMLEvent.END_ELEMENT:
                        EndElement evEnd = (EndElement) ev;
                        if ("seg".equals(evEnd.getName().getLocalPart())) {
                            return;
                        }
                    }
                }
            }

            segContent.append('<');
            if (slashBefore) {
                segContent.append('/');
            }
            segContent.appendCodePoint(tagName);
            segContent.append(Integer.toString(tagN));
            if (slashAfter) {
                segContent.append('/');
            }
            segContent.append('>');
            break;
        case XMLEvent.CHARACTERS:
            Characters c = (Characters) e;
            if (inlineLevel == 0) {
                segContent.append(c.getData());
            } else {
                segInlineTag.append(c.getData());
            }
            break;
        }
    }
}

From source file:org.openhab.binding.dwdunwetter.internal.data.DwdWarningsData.java

/**
 * Refreshes the Warnings Data/* w ww  .j a  v a 2  s  . c o m*/
 */
public boolean refresh() {
    String rawData = dataAccessCached.getValue();
    if (StringUtils.isEmpty(rawData)) {
        logger.debug("No Data from Endpoint");
        return false;
    }

    cityData.clear();

    try {
        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
        XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(rawData));
        XMLEventReader eventReader = inputFactory.createXMLEventReader(reader);
        DwdWarningData gemeindeData = new DwdWarningData();
        boolean insideGemeinde = false;
        while (eventReader.hasNext()) {
            XMLEvent event = eventReader.nextEvent();
            if (!insideGemeinde && event.isStartElement()) {
                DwdXmlTag xmlTag = DwdXmlTag.getDwdXmlTag(event.asStartElement().getName().getLocalPart());
                switch (xmlTag) {
                case WARNUNGEN_GEMEINDEN:
                    gemeindeData = new DwdWarningData();
                    insideGemeinde = true;
                    break;
                default:
                    break;
                }
            } else if (insideGemeinde && event.isStartElement()) {
                DwdXmlTag xmlTag = DwdXmlTag.getDwdXmlTag(event.asStartElement().getName().getLocalPart());
                switch (xmlTag) {
                case SEVERITY:
                    gemeindeData.setSeverity(Severity.getSeverity(getValue(eventReader)));
                    break;
                case DESCRIPTION:
                    gemeindeData.setDescription(getValue(eventReader));
                    break;
                case EFFECTIVE:
                    gemeindeData.setEffective(getTimestampValue(eventReader));
                    break;
                case EXPIRES:
                    gemeindeData.setExpires(getTimestampValue(eventReader));
                    break;
                case EVENT:
                    gemeindeData.setEvent(getValue(eventReader));
                    break;
                case STATUS:
                    gemeindeData.setStatus(getValue(eventReader));
                    break;
                case MSGTYPE:
                    gemeindeData.setMsgType(getValue(eventReader));
                    break;
                case HEADLINE:
                    gemeindeData.setHeadline(getValue(eventReader));
                    break;
                case ONSET:
                    gemeindeData.setOnset(getTimestampValue(eventReader));
                    break;
                case ALTITUDE:
                    gemeindeData.setAltitude(getBigDecimalValue(eventReader));
                    break;
                case CEILING:
                    gemeindeData.setCeiling(getBigDecimalValue(eventReader));
                    break;
                case IDENTIFIER:
                    gemeindeData.setId(getValue(eventReader));
                    break;
                case INSTRUCTION:
                    gemeindeData.setInstruction(getValue(eventReader));
                    break;
                case URGENCY:
                    gemeindeData.setUrgency(Urgency.getUrgency(getValue(eventReader)));
                    break;
                default:
                    break;
                }
            } else if (insideGemeinde && event.isEndElement()) {
                DwdXmlTag xmlTag = DwdXmlTag.getDwdXmlTag(event.asEndElement().getName().getLocalPart());
                switch (xmlTag) {
                case WARNUNGEN_GEMEINDEN:
                    if (!gemeindeData.isTest() && !gemeindeData.isCancel()) {
                        cityData.add(gemeindeData);
                    }
                    insideGemeinde = false;
                    break;
                default:
                    break;
                }
            }
        }
    } catch (XMLStreamException e) {
        logger.debug("Exception while parsing the XML Response", e);
        return false;
    }
    Collections.sort(cityData, new SeverityComparator());
    return true;
}

From source file:org.openhim.mediator.denormalization.EnrichRegistryStoredQueryActor.java

private String enrichStoredQueryXML(Identifier id, InputStream xml) throws XMLStreamException {
    XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(xml);
    StringWriter output = new StringWriter();
    XMLEventWriter writer = XMLOutputFactory.newInstance().createXMLEventWriter(output);
    XMLEventFactory eventFactory = XMLEventFactory.newFactory();

    String curSlot = null;//from w  w w. ja  v a2s  .c  o m
    boolean patientIdSlot = false;

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

        if (event.getEventType() == XMLEvent.START_ELEMENT) {
            StartElement elem = event.asStartElement();
            if ("Slot".equals(elem.getName().getLocalPart())) {
                curSlot = elem.getAttributeByName(new QName("name")).getValue();
            } else if ("Value".equals(elem.getName().getLocalPart())
                    && ParseRegistryStoredQueryActor.PATIENT_ID_SLOT_TYPE.equals(curSlot)) {
                patientIdSlot = true;
                writer.add(event);
            }
        } else if (event.getEventType() == XMLEvent.END_ELEMENT) {
            EndElement elem = event.asEndElement();
            if (patientIdSlot && "Value".equals(elem.getName().getLocalPart())) {
                XMLEvent ecidEvent = eventFactory.createCharacters("'" + id.toString() + "'");
                writer.add(ecidEvent);
                patientIdSlot = false;
            }
        }

        if (!patientIdSlot) {
            writer.add(event);
        }
    }

    writer.close();
    return output.toString();
}