public void traverse(XMLStreamReader x) throws XMLStreamException, XBindException { while (x.hasNext()) { switch (x.next()) { case XMLStreamConstants.START_ELEMENT: Attributes attributes = new Attributes(); for (int i = 0; i < x.getAttributeCount(); i++) attributes.put(x.getAttributeLocalName(i), x.getAttributeValue(i)); onStartElement(x.getLocalName(), attributes); break; case XMLStreamConstants.CDATA: case XMLStreamConstants.CHARACTERS: onCharacters(x.getTextCharacters(), x.getTextStart(), x.getTextLength()); break; case XMLStreamConstants.END_ELEMENT: onEndElement(x.getLocalName()); break; } } }