List of usage examples for javax.xml.stream.events XMLEvent isStartElement
public boolean isStartElement();
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; }