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

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

Introduction

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

Prototype

public boolean isStartElement();

Source Link

Document

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

Usage

From source file:org.codice.ddf.spatial.ogc.wfs.transformer.handlebars.HandlebarsWfsFeatureTransformer.java

/**
 * Reads in the FeatureMember from the input stream, populating the contextMap with the XML tag
 * names and values// ww w. ja v  a  2s.  co m
 *
 * @param inputStream the stream containing the FeatureMember xml document
 */
private void populateContextMap(InputStream inputStream, Map<String, String> contextMap) {
    Map<String, String> namespaces = new HashMap<>();
    boolean canHandleFeatureType = false;
    try {
        XMLEventReader xmlEventReader = getXmlEventReader(inputStream);

        String elementName = null;
        while (xmlEventReader.hasNext()) {
            XMLEvent xmlEvent = xmlEventReader.nextEvent();
            if (xmlEvent.isStartElement()) {
                StartElement startElement = xmlEvent.asStartElement();
                elementName = startElement.getName().getLocalPart();
                canHandleFeatureType |= processStartElement(xmlEventReader, startElement, namespaces,
                        contextMap, canHandleFeatureType);
                addXmlAttributesToContextMap(startElement, contextMap);
            } else if (xmlEvent.isCharacters()) {
                contextMap.put(elementName, xmlEvent.asCharacters().getData());
            }
        }
        if (!canHandleFeatureType) {
            contextMap.clear();
        }
    } catch (XMLStreamException e) {
        LOGGER.debug("Error transforming feature to metacard.", e);
    }
}

From source file:org.codice.ddf.spatial.ogc.wfs.transformer.handlebars.HandlebarsWfsFeatureTransformer.java

private boolean processStartElement(XMLEventReader xmlEventReader, StartElement startElement,
        Map<String, String> namespaces, Map<String, String> contextMap, boolean featureTypeFound)
        throws XMLStreamException {
    mapNamespaces(startElement, namespaces);
    if (!featureTypeFound) {
        if (canHandleFeatureType(startElement)) {
            String id = getIdAttributeValue(startElement, namespaces,
                    getNamespaceAlias(GML_NAMESPACE, namespaces));
            contextMap.put(METACARD_ID, id);
            return true;
        }/*w  w  w. j  a va2 s.co  m*/
    } else {
        XMLEvent eventPeek = xmlEventReader.peek();
        if (eventPeek.isStartElement() && isGmlElement(eventPeek.asStartElement(), namespaces)) {
            readGmlData(xmlEventReader, startElement.getName().getLocalPart(), contextMap);
        }
    }
    return false;
}

From source file:org.codice.ddf.spatial.ogc.wfs.transformer.handlebars.HandlebarsWfsFeatureTransformer.java

private void readGmlData(XMLEventReader xmlEventReader, String elementName, Map<String, String> contextMap)
        throws XMLStreamException {

    if (!xmlEventReader.peek().isStartElement()) {
        LOGGER.debug("Problem reading gml data for element: {}. Invalid xml element provided.", elementName);
        return;/*w  ww. j a  va  2 s.com*/
    }

    StringWriter stringWriter = new StringWriter();
    XMLEventWriter eventWriter = XML_OUTPUT_FACTORY.createXMLEventWriter(stringWriter);

    if (eventWriter == null) {
        LOGGER.debug("Problem reading gml data for element: {}. Event writer is null", elementName);
        return;
    }

    int count = 0;
    boolean addEvent = true;

    try {
        while (addEvent) {
            XMLEvent xmlEvent = xmlEventReader.nextEvent();

            // populate the start element with the namespaces
            if (xmlEvent.isStartElement()) {
                xmlEvent = addNamespacesToStartElement(xmlEvent.asStartElement());
                count++;
            } else if (xmlEvent.isEndElement()) {
                if (count == 0) {
                    addEvent = false;
                    eventWriter.flush();
                    LOGGER.debug("String writer: {}", stringWriter);
                    contextMap.put(elementName, stringWriter.toString());
                }
                count--;
            }

            if (addEvent) {
                eventWriter.add(xmlEvent);
            }
        }
    } finally {
        eventWriter.close();
    }
}

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

@Test
public void testDeliverableUnitWithWrappingEventReader() throws XMLStreamException {
    final XMLEventReader reader = new WrappingEventReader(
            readerFactory.createXMLEventReader(IOUtils.toInputStream(DU_XML)));

    XMLEvent e = reader.nextEvent();
    assertEquals(START_DOCUMENT, e.getEventType());

    e = reader.nextEvent();/*from   w w  w . jav a  2s.co m*/
    assertEquals(COMMENT, e.getEventType());

    e = reader.nextEvent();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(Q_DCP, e.asStartElement().getName());

    e = reader.nextEvent();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(Q_DUS, e.asStartElement().getName());

    e = reader.nextEvent();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(Q_DU, e.asStartElement().getName());

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

    e = reader.nextEvent();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(new QName(NS_URI, "collection"), e.asStartElement().getName());

    // Skip to the <metadata> element
    while ((e = reader.nextTag()) != null) {
        if (e.isStartElement() && e.asStartElement().getName().getLocalPart().equals("metadata")) {
            break;
        }
    }

    e = reader.nextTag();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(new QName("http://www.amazon.com", "md"), e.asStartElement().getName());

    e = reader.nextTag();
    assertEquals(START_ELEMENT, e.getEventType());
    assertEquals(new QName("http://www.amazon.com", "origReleaseDate"), e.asStartElement().getName());
}

From source file:org.dkpro.core.io.xces.XcesBasicXmlReader.java

public static boolean isStartElement(XMLEvent aEvent, String aElement) {

    return aEvent.isStartElement() && ((StartElement) aEvent).getName().getLocalPart().equals(aElement);
}

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

/**
 * Checks if the current tag is the begin of a snippet.
 * //www . j  a  v  a  2s  .c  o  m
 * @param event
 *          the XMLEvent
 * @return true if the tag name and the start/end tag settings of the _begin MarkerTag match the current events
 *         properties.
 */
private boolean isSnippetBegin(final XMLEvent event) {
    boolean condition = false;
    if (_begin.isEndTag()) {
        condition = event.isEndElement();
    } else {
        condition = event.isStartElement();
    }
    return condition && _begin.getName().equals(event.asStartElement().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 www .  ja  v a 2  s  .co  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.emonocot.job.io.StaxEventItemReader.java

/**
 * Read until the first StartElement tag that matches the provided
 * fragmentRootElementName. Because there may be any number of tags in
 * between where the reader is now and the fragment start, this is done in a
 * loop until the element type and name match.
 *
 * @throws XMLStreamException if there is a problem reading the preamble
 *///  w ww . j  a va  2  s . c o m
private void readToStartFragment() throws XMLStreamException {
    while (true) {
        XMLEvent nextEvent = eventReader.nextEvent();
        if (nextEvent.isStartElement()
                && ((StartElement) nextEvent).getName().getLocalPart().equals(fragmentRootElementName)) {
            return;
        }
    }
}

From source file:org.geoserver.backuprestore.reader.CatalogFileReader.java

private QName readToStartFragment() throws XMLStreamException {
    while (true) {
        XMLEvent nextEvent = eventReader.nextEvent();
        if (nextEvent.isStartElement() && isFragmentRootElementName(((StartElement) nextEvent).getName())) {
            return ((StartElement) nextEvent).getName();
        }/*  w  ww . ja v  a  2 s.  c o m*/
    }
}

From source file:org.jasig.portal.layout.TransientUserLayoutXMLEventReader.java

@Override
protected Deque<XMLEvent> getAdditionalEvents(XMLEvent event) {
    if (event.isStartElement()) {
        final StartElement startElement = event.asStartElement();

        //All following logic requires an ID attribute, ignore any element without one
        final Attribute idAttribute = startElement.getAttributeByName(IUserLayoutManager.ID_ATTR_NAME);
        if (idAttribute == null) {
            return null;
        }/*from w  w w  .java  2s.  co m*/

        //Handle adding a transient folder to the root element
        if (this.rootFolderId.equals(idAttribute.getValue())) {
            final QName name = startElement.getName();
            final String namespaceURI = name.getNamespaceURI();
            final String prefix = name.getPrefix();

            final Deque<XMLEvent> transientEventBuffer = new LinkedList<XMLEvent>();

            final Collection<Attribute> transientFolderAttributes = new LinkedList<Attribute>();
            transientFolderAttributes.add(
                    EVENT_FACTORY.createAttribute("ID", TransientUserLayoutManagerWrapper.TRANSIENT_FOLDER_ID));
            transientFolderAttributes.add(EVENT_FACTORY.createAttribute("type", "regular"));
            transientFolderAttributes.add(EVENT_FACTORY.createAttribute("hidden", "true"));
            transientFolderAttributes.add(EVENT_FACTORY.createAttribute("unremovable", "true"));
            transientFolderAttributes.add(EVENT_FACTORY.createAttribute("immutable", "true"));
            transientFolderAttributes.add(EVENT_FACTORY.createAttribute("name", "Transient Folder"));

            final StartElement transientFolder = EVENT_FACTORY.createStartElement(prefix, namespaceURI,
                    IUserLayoutManager.FOLDER, transientFolderAttributes.iterator(), null);
            transientEventBuffer.add(transientFolder);

            //append channel element iff subscribeId describes a transient channel, and not a regular layout channel
            final String subscribeId = this.userLayoutManager.getFocusedId();
            if (null != subscribeId && !subscribeId.equals("")
                    && this.userLayoutManager.isTransientChannel(subscribeId)) {
                IPortletDefinition chanDef = null;
                try {
                    chanDef = this.userLayoutManager.getChannelDefinition(subscribeId);
                } catch (Exception e) {
                    this.logger.error("Could not obtain IChannelDefinition for subscribe id: " + subscribeId,
                            e);
                }

                if (chanDef != null) {
                    //TODO Move IChannelDefinition/IPortletDefinition -> StAX events code somewhere reusable
                    final Collection<Attribute> channelAttrs = new LinkedList<Attribute>();
                    channelAttrs.add(EVENT_FACTORY.createAttribute("ID", subscribeId));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("typeID",
                            Integer.toString(chanDef.getType().getId())));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("hidden", "false"));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("unremovable", "true"));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("name", chanDef.getName()));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("description", chanDef.getDescription()));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("title", chanDef.getTitle()));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("chanID",
                            chanDef.getPortletDefinitionId().getStringId()));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("fname", chanDef.getFName()));
                    channelAttrs.add(
                            EVENT_FACTORY.createAttribute("timeout", Integer.toString(chanDef.getTimeout())));
                    channelAttrs.add(EVENT_FACTORY.createAttribute("transient", "true"));

                    final StartElement startChannel = EVENT_FACTORY.createStartElement(prefix, namespaceURI,
                            IUserLayoutManager.CHANNEL, channelAttrs.iterator(), null);
                    transientEventBuffer.offer(startChannel);

                    // add channel parameter elements
                    for (final IPortletDefinitionParameter parm : chanDef.getParameters()) {
                        final Collection<Attribute> parameterAttrs = new LinkedList<Attribute>();
                        parameterAttrs.add(EVENT_FACTORY.createAttribute("name", parm.getName()));
                        parameterAttrs.add(EVENT_FACTORY.createAttribute("value", parm.getValue()));

                        final StartElement startParameter = EVENT_FACTORY.createStartElement(prefix,
                                namespaceURI, IUserLayoutManager.PARAMETER, parameterAttrs.iterator(), null);
                        transientEventBuffer.offer(startParameter);

                        final EndElement endParameter = EVENT_FACTORY.createEndElement(prefix, namespaceURI,
                                IUserLayoutManager.PARAMETER, null);
                        transientEventBuffer.offer(endParameter);
                    }

                    final EndElement endChannel = EVENT_FACTORY.createEndElement(prefix, namespaceURI,
                            IUserLayoutManager.CHANNEL, null);
                    transientEventBuffer.offer(endChannel);
                }
            }

            final EndElement endFolder = EVENT_FACTORY.createEndElement(prefix, namespaceURI,
                    IUserLayoutManager.FOLDER, null);
            transientEventBuffer.offer(endFolder);

            return transientEventBuffer;
        }
    }

    return null;
}