use of javax.xml.stream.events.EndElement in project hibernate-orm by hibernate.
the class FilteringXMLEventReader method internalNext.
protected final XMLEvent internalNext(boolean peek) throws XMLStreamException {
XMLEvent event = null;
if (peekedEvent != null) {
event = peekedEvent;
peekedEvent = null;
return event;
}
do {
event = super.getParent().nextEvent();
// If there are pruned elements in the queue filtering events is still needed
if (!prunedElements.isEmpty()) {
// If another start element add it to the queue
if (event.isStartElement()) {
final StartElement startElement = event.asStartElement();
prunedElements.push(startElement.getName());
} else // If end element pop the newest name of the queue and double check that the start/end elements match up
if (event.isEndElement()) {
final QName startElementName = prunedElements.pop();
final EndElement endElement = event.asEndElement();
final QName endElementName = endElement.getName();
if (!startElementName.equals(endElementName)) {
throw new IllegalArgumentException("Malformed XMLEvent stream. Expected end element for " + startElementName + " but found end element for " + endElementName);
}
}
event = null;
} else {
final XMLEvent filteredEvent = this.filterEvent(event, peek);
// end element need to be removed as well
if (filteredEvent == null && event.isStartElement()) {
final StartElement startElement = event.asStartElement();
final QName name = startElement.getName();
prunedElements.push(name);
}
event = filteredEvent;
}
} while (event == null);
return event;
}
use of javax.xml.stream.events.EndElement in project sirix by sirixdb.
the class TextView method processEndTag.
/**
* Process end tag.
*
* @param pEvent
* {@link XMLEvent} reference
* @param pLevel
* level in the tree
* @param pIndentSpaces
* determines how many spaces to indent
* @param pDoc
* {@link StyledDocument} reference
* @param pStyleElements
* {@link Style} reference
* @throws BadLocationException
* if insertion of string fails
*/
private void processEndTag(final XMLEvent pEvent, final int pLevel, final String pIndentSpaces, final StyledDocument pDoc, final Style pStyleElements) throws BadLocationException {
assert pEvent != null;
// assert pLevel >= 0;
assert pIndentSpaces != null;
assert pDoc != null;
assert pStyleElements != null;
final EndElement endTag = pEvent.asEndElement();
final QName name = endTag.getName();
LOGWRAPPER.debug("endTag: " + endTag);
indent(pDoc, pLevel, pIndentSpaces);
pDoc.insertString(pDoc.getLength(), new StringBuilder().append("</").append(ViewUtilities.qNameToString(new QNm(name.getNamespaceURI(), name.getPrefix(), name.getLocalPart()))).append(">").append(NEWLINE).toString(), pStyleElements);
}
use of javax.xml.stream.events.EndElement in project tutorials by eugenp.
the class StaxParser method getAllTutorial.
public List<Tutorial> getAllTutorial() {
boolean bTitle = false;
boolean bDescription = false;
boolean bDate = false;
boolean bAuthor = false;
List<Tutorial> tutorials = new ArrayList<Tutorial>();
try {
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader eventReader = factory.createXMLEventReader(new FileReader(this.getFile()));
Tutorial current = null;
while (eventReader.hasNext()) {
XMLEvent event = eventReader.nextEvent();
switch(event.getEventType()) {
case XMLStreamConstants.START_ELEMENT:
StartElement startElement = event.asStartElement();
String qName = startElement.getName().getLocalPart();
if (qName.equalsIgnoreCase("tutorial")) {
current = new Tutorial();
Iterator<Attribute> attributes = startElement.getAttributes();
while (attributes.hasNext()) {
Attribute currentAt = attributes.next();
if (currentAt.getName().toString().equalsIgnoreCase("tutId")) {
current.setTutId(currentAt.getValue());
} else if (currentAt.getName().toString().equalsIgnoreCase("type")) {
current.setType(currentAt.getValue());
}
}
} else if (qName.equalsIgnoreCase("title")) {
bTitle = true;
} else if (qName.equalsIgnoreCase("description")) {
bDescription = true;
} else if (qName.equalsIgnoreCase("date")) {
bDate = true;
} else if (qName.equalsIgnoreCase("author")) {
bAuthor = true;
}
break;
case XMLStreamConstants.CHARACTERS:
Characters characters = event.asCharacters();
if (bTitle) {
if (current != null) {
current.setTitle(characters.getData());
}
bTitle = false;
}
if (bDescription) {
if (current != null) {
current.setDescription(characters.getData());
}
bDescription = false;
}
if (bDate) {
if (current != null) {
current.setDate(characters.getData());
}
bDate = false;
}
if (bAuthor) {
if (current != null) {
current.setAuthor(characters.getData());
}
bAuthor = false;
}
break;
case XMLStreamConstants.END_ELEMENT:
EndElement endElement = event.asEndElement();
if (endElement.getName().getLocalPart().equalsIgnoreCase("tutorial")) {
if (current != null) {
tutorials.add(current);
}
}
break;
}
}
} catch (FileNotFoundException | XMLStreamException e) {
e.printStackTrace();
}
return tutorials;
}
use of javax.xml.stream.events.EndElement in project solr-cmd-utils by tblsoft.
the class SolrXmlParser method parse.
public void parse() throws Exception {
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
InputStream is = IOUtils.getInputStream(getInputFileName());
XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(is);
boolean isDoc = false;
boolean isFacet = false;
boolean isArr = false;
int lstCounter = 0;
String currentValue = "";
String currentName = "";
List<String> possibleStartElements = Arrays.asList("date,arr,str,bool,double,float,long,int".split(","));
while (xmlEventReader.hasNext()) {
XMLEvent xmlEvent = xmlEventReader.nextEvent();
if (xmlEvent.isStartElement()) {
StartElement startElement = xmlEvent.asStartElement();
if (startElement.getAttributeByName(new QName("name")) != null) {
currentName = startElement.getAttributeByName(new QName("name")).getValue();
}
if (startElement.getName().getLocalPart().equals("doc")) {
isDoc = true;
}
if (startElement.getName().getLocalPart().equals("lst")) {
lstCounter++;
if (isFacet)
if ("facet_fields".equals(currentName)) {
isFacet = true;
}
}
} else if (xmlEvent.isEndElement()) {
EndElement endElement = xmlEvent.asEndElement();
if (endElement.getName().getLocalPart().equals("doc")) {
isDoc = false;
endDocument();
} else if (endElement.getName().getLocalPart().equals("arr")) {
currentName = "";
} else if (isDoc && possibleStartElements.contains(endElement.getName().getLocalPart())) {
if (currentName != null && !"".equals(currentName)) {
field(currentName, currentValue);
}
currentValue = "";
} else if (endElement.getName().getLocalPart().equals("lst")) {
lstCounter--;
} else {
}
} else if (xmlEvent.isCharacters()) {
Characters characters = xmlEvent.asCharacters();
currentValue = characters.getData();
}
}
is.close();
xmlEventReader.close();
}
use of javax.xml.stream.events.EndElement in project contribution by checkstyle.
the class CheckstyleConfigurationsParser method parseModule.
/**
* Recursively processes parsing of the configuration XML file with StAX parser.
* Configuration XML has recursive tree structure
* where module tags are nested into other module tags, also
* duplicates of the same modules may be present in one configuration,
* so there are no other option but to parse configuration
* into the same tree structure.
*
* @param reader
* StAX parser interface.
* @param parent
* parent module tag.
* @throws XMLStreamException
* on internal StAX parser error.
*/
private static void parseModule(XMLEventReader reader, ConfigurationModule parent) throws XMLStreamException {
while (reader.hasNext()) {
final XMLEvent event = reader.nextEvent();
if (event.isStartElement()) {
final StartElement startElement = event.asStartElement();
final String startElementName = startElement.getName().getLocalPart();
// module tag encounter
if (startElementName.equals(MODULE_TAG)) {
processModuleTag(reader, startElement, parent);
} else // property tag encounter
if (startElementName.equals(PROPERTY_TAG)) {
processPropertyTag(startElement, parent);
} else // message tag encounter
if (startElementName.equals(MESSAGE_TAG)) {
processMessageTag(startElement, parent);
}
}
if (event.isEndElement()) {
final EndElement endElement = event.asEndElement();
if (endElement.getName().getLocalPart().equals(MODULE_TAG)) {
// return from recursive method
break;
}
}
}
}
Aggregations