void parseNext() throws IOException, XMLStreamException { switch (reader.next()) { case XMLStreamConstants.START_ELEMENT: handleStartElement(); break; case XMLStreamConstants.CHARACTERS: if (parseToken) { char[] text = reader.getTextCharacters(); token.append(text, reader.getTextStart(), reader.getTextLength()); } break; case XMLStreamConstants.END_ELEMENT: handleEndElement(); break; default: break; } } }
protected void skip(XMLStreamReader2 reader) throws XMLStreamException { int level = 1; do { int event = reader.next(); if(event == XMLStreamConstants.START_ELEMENT) { level++; } else if(event == XMLStreamConstants.END_ELEMENT) { level--; } } while(level > 0); }
private final int _skipUntilTag() throws XMLStreamException { while (true) { int type; switch (type = _xmlReader.next()) { case XMLStreamConstants.START_ELEMENT: case XMLStreamConstants.END_ELEMENT: case XMLStreamConstants.END_DOCUMENT: return type; default: // any other type (proc instr, comment etc) is just ignored } } }
public int next() throws XMLStreamException { int type; do { type = mDelegate2.next(); if (mFilter.accept(this)) { break; } } while (type != END_DOCUMENT); return type; }
private final int _skipUntilTag() throws XMLStreamException { while (_xmlReader.hasNext()) { int type; switch (type = _xmlReader.next()) { case XMLStreamConstants.START_ELEMENT: case XMLStreamConstants.END_ELEMENT: case XMLStreamConstants.END_DOCUMENT: return type; default: // any other type (proc instr, comment etc) is just ignored } } throw new IllegalStateException("Expected to find a tag, instead reached end of input"); }
private final int _skipUntilTag() throws XMLStreamException { while (_xmlReader.hasNext()) { int type; switch (type = _xmlReader.next()) { case XMLStreamConstants.START_ELEMENT: case XMLStreamConstants.END_ELEMENT: case XMLStreamConstants.END_DOCUMENT: return type; default: // any other type (proc instr, comment etc) is just ignored } } throw new IllegalStateException("Expected to find a tag, instead reached end of input"); }
/** * Collect all consecutive text starting at the current point. * * @return the concatenated consecutive text. */ private String collectText() throws XMLStreamException { StringBuilder elementText = new StringBuilder(); while (xmlReader.isCharacters()) { elementText.append(xmlReader.getText().replaceAll("\r", "").trim()); xmlReader.next(); } return elementText.toString(); }
private final String _collectUntilTag() throws XMLStreamException { String text = null; while (true) { switch (_xmlReader.next()) { case XMLStreamConstants.START_ELEMENT: case XMLStreamConstants.END_ELEMENT: case XMLStreamConstants.END_DOCUMENT: return text; // note: SPACE is ignorable (and seldom seen), not to be included case XMLStreamConstants.CHARACTERS: case XMLStreamConstants.CDATA: if (text == null) { text = _xmlReader.getText(); } else { // can be optimized in future, if need be: text += _xmlReader.getText(); } break; default: // any other type (proc instr, comment etc) is just ignored } } }
private final String _collectUntilTag() throws XMLStreamException { String text = null; while (true) { switch (_xmlReader.next()) { case XMLStreamConstants.START_ELEMENT: case XMLStreamConstants.END_ELEMENT: case XMLStreamConstants.END_DOCUMENT: return text; // note: SPACE is ignorable (and seldom seen), not to be included case XMLStreamConstants.CHARACTERS: case XMLStreamConstants.CDATA: if (text == null) { text = _xmlReader.getText(); } else { // can be optimized in future, if need be: text += _xmlReader.getText(); } break; default: // any other type (proc instr, comment etc) is just ignored } } }
protected void parseDemandSet(NetPlan netPlan, XMLStreamReader2 xmlStreamReader) throws XMLStreamException { while(xmlStreamReader.hasNext()) { xmlStreamReader.next(); switch(xmlStreamReader.getEventType()) { case XMLEvent.START_ELEMENT: String startElementName = xmlStreamReader.getName().toString(); switch(startElementName) { case "demandEntry": parseDemand(netPlan, xmlStreamReader); break; default: throw new RuntimeException("Bad"); } break; case XMLEvent.END_ELEMENT: String endElementName = xmlStreamReader.getName().toString(); if (endElementName.equals("demandSet")) return; break; } } throw new RuntimeException("'Demand set' element not parsed correctly (end tag not found)"); }
public static String getVersion(String file) throws XMLStreamException, IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); XMLInputFactory2 ifact = (XMLInputFactory2) XMLInputFactory.newInstance(); ifact.configureForXmlConformance(); XMLStreamReader2 staxXmlReader = (XMLStreamReader2) ifact.createXMLStreamReader(bis); String currentElement; while (staxXmlReader.hasNext()) { int event = staxXmlReader.next(); switch (event) { case XMLStreamConstants.START_ELEMENT: currentElement = staxXmlReader.getLocalName(); if (currentElement.equalsIgnoreCase("ONDEX")) { for (int i = 0; i < staxXmlReader.getAttributeCount(); i++) { if (staxXmlReader.getAttributeName(i).getLocalPart().equalsIgnoreCase("version")) { String result = staxXmlReader.getAttributeValue(i); bis.close(); return result; } } } } } return "1.0"; }
Reader r = new StringReader("<foo><filedata encoding=\"base64\">largeChunkEncodedHere</filedata></foo>"); Writer w = new StringWriter(); XMLInputFactory2 xmlif = (XMLInputFactory2)XMLInputFactory2.newInstance(); XMLStreamReader2 sr = (XMLStreamReader2)xmlif.createXMLStreamReader(r); boolean flag = false; while (sr.hasNext()) { sr.next(); if (sr.getEventType() == XMLStreamConstants.START_ELEMENT) { if ("filedata".equals(sr.getLocalName())) { flag = true; } } else if (sr.getEventType() == XMLStreamConstants.CHARACTERS) { if (flag) { sr.getText(w, false); break; } } } System.out.println(w);
@Override public XMLEvent peek() throws XMLStreamException { if (mPeekedEvent == null) { if (mState == STATE_END_OF_INPUT) { // 06-Mar-2006, TSa: Fixed as per Arjen's suggestion: //throwEndOfInput(); return null; } if (mState == STATE_INITIAL) { // Not sure what it should be... but this should do: mPrePeekEvent = START_DOCUMENT; mPeekedEvent = createStartDocumentEvent(); mState = STATE_CONTENT; } else { mPrePeekEvent = mReader.getEventType(); mPeekedEvent = createNextEvent(false, mReader.next()); } } return mPeekedEvent; }
public XMLEvent peek() throws XMLStreamException { if (mPeekedEvent == null) { if (mState == STATE_END_OF_INPUT) { // 06-Mar-2006, TSa: Fixed as per Arjen's suggestion: //throwEndOfInput(); return null; } if (mState == STATE_INITIAL) { // Not sure what it should be... but this should do: mPrePeekEvent = START_DOCUMENT; mPeekedEvent = createStartDocumentEvent(); mState = STATE_CONTENT; } else { mPrePeekEvent = mReader.getEventType(); mPeekedEvent = createNextEvent(false, mReader.next()); } } return mPeekedEvent; }
@Override public XMLEvent peek() throws XMLStreamException { if (mPeekedEvent == null) { if (mState == STATE_END_OF_INPUT) { // 06-Mar-2006, TSa: Fixed as per Arjen's suggestion: //throwEndOfInput(); return null; } if (mState == STATE_INITIAL) { // Not sure what it should be... but this should do: mPrePeekEvent = START_DOCUMENT; mPeekedEvent = createStartDocumentEvent(); mState = STATE_CONTENT; } else { mPrePeekEvent = mReader.getEventType(); mPeekedEvent = createNextEvent(false, mReader.next()); } } return mPeekedEvent; }
protected void parseForwardingRule(NetPlan netPlan, long layerId, XMLStreamReader2 xmlStreamReader , DoubleMatrix2D f_de) throws XMLStreamException { long linkId = xmlStreamReader.getAttributeAsLong(xmlStreamReader.getAttributeIndex(null, "linkId")); long demandId = xmlStreamReader.getAttributeAsLong(xmlStreamReader.getAttributeIndex(null, "demandId")); double splittingRatio = xmlStreamReader.getAttributeAsDouble(xmlStreamReader.getAttributeIndex(null, "splittingRatio")); f_de.set (mapOldId2Demand.get(demandId).index , mapOldId2Link.get(linkId).index , splittingRatio); while(xmlStreamReader.hasNext()) { xmlStreamReader.next(); switch(xmlStreamReader.getEventType()) { case XMLEvent.START_ELEMENT: String startElementName = xmlStreamReader.getName().toString(); switch(startElementName) { case "attribute": break; default: throw new RuntimeException("Bad"); } break; case XMLEvent.END_ELEMENT: String endElementName = xmlStreamReader.getName().toString(); if (endElementName.equals("forwardingRule")) return; break; } } throw new RuntimeException("'Forwarding rule' element not parsed correctly (end tag not found)"); }
public XMLEvent nextEvent() throws XMLStreamException { if (mState == STATE_END_OF_INPUT) { throwEndOfInput(); } else if (mState == STATE_INITIAL) { mState = STATE_CONTENT; return createStartDocumentEvent(); } if (mPeekedEvent != null) { XMLEvent evt = mPeekedEvent; mPeekedEvent = null; if (evt.isEndDocument()) { mState = STATE_END_OF_INPUT; } return evt; } return createNextEvent(true, mReader.next()); }
/** * Method called when we are about to return <code>END_DOCUMENT</code> event. * Usually this should change state to <code>STATE_END_OF_INPUT</code>, but * may vary for some alternative read modes (like multi-document) * * @since 4.2 */ protected void updateStateEndDocument() throws XMLStreamException { if (mCfgMultiDocMode) { // As per [woodstox-core#42] should allow reading over multiple documents... if (mReader.hasNext()) { // Let's sanity-check that we get token we expect however: int next = mReader.next(); if (next == START_DOCUMENT) { mPrePeekEvent = START_DOCUMENT; mPeekedEvent = createStartDocumentEvent(); mState = STATE_CONTENT; return; } reportProblem("Unexpected token ("+ErrorConsts.tokenTypeDesc(next) +") after END_DOCUMENT in multi-document mode, XMLStreamReader.hasNext() returning true"); } } mState = STATE_END_OF_INPUT; }
@Override public XMLEvent nextEvent() throws XMLStreamException { if (mState == STATE_END_OF_INPUT) { throwEndOfInput(); } else if (mState == STATE_INITIAL) { mState = STATE_CONTENT; return createStartDocumentEvent(); } if (mPeekedEvent != null) { XMLEvent evt = mPeekedEvent; mPeekedEvent = null; if (evt.isEndDocument()) { updateStateEndDocument(); } return evt; } return createNextEvent(true, mReader.next()); }
@Override public XMLEvent nextEvent() throws XMLStreamException { if (mState == STATE_END_OF_INPUT) { throwEndOfInput(); } else if (mState == STATE_INITIAL) { mState = STATE_CONTENT; return createStartDocumentEvent(); } if (mPeekedEvent != null) { XMLEvent evt = mPeekedEvent; mPeekedEvent = null; if (evt.isEndDocument()) { updateStateEndDocument(); } return evt; } return createNextEvent(true, mReader.next()); }