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