Search in sources :

Example 11 with EndElement

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;
}
Also used : StartElement(javax.xml.stream.events.StartElement) EndElement(javax.xml.stream.events.EndElement) QName(javax.xml.namespace.QName) XMLEvent(javax.xml.stream.events.XMLEvent)

Example 12 with EndElement

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);
}
Also used : QNm(org.brackit.xquery.atomic.QNm) EndElement(javax.xml.stream.events.EndElement) QName(javax.xml.namespace.QName)

Example 13 with EndElement

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;
}
Also used : Tutorial(com.baeldung.xml.binding.Tutorial) Attribute(javax.xml.stream.events.Attribute) EndElement(javax.xml.stream.events.EndElement) Characters(javax.xml.stream.events.Characters) ArrayList(java.util.ArrayList) FileNotFoundException(java.io.FileNotFoundException) StartElement(javax.xml.stream.events.StartElement) XMLStreamException(javax.xml.stream.XMLStreamException) XMLEvent(javax.xml.stream.events.XMLEvent) XMLEventReader(javax.xml.stream.XMLEventReader) FileReader(java.io.FileReader) XMLInputFactory(javax.xml.stream.XMLInputFactory)

Example 14 with EndElement

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();
}
Also used : StartElement(javax.xml.stream.events.StartElement) EndElement(javax.xml.stream.events.EndElement) InputStream(java.io.InputStream) QName(javax.xml.namespace.QName) Characters(javax.xml.stream.events.Characters) XMLEvent(javax.xml.stream.events.XMLEvent) XMLEventReader(javax.xml.stream.XMLEventReader) XMLInputFactory(javax.xml.stream.XMLInputFactory)

Example 15 with EndElement

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;
            }
        }
    }
}
Also used : StartElement(javax.xml.stream.events.StartElement) EndElement(javax.xml.stream.events.EndElement) XMLEvent(javax.xml.stream.events.XMLEvent)

Aggregations

EndElement (javax.xml.stream.events.EndElement)41 XMLEvent (javax.xml.stream.events.XMLEvent)32 StartElement (javax.xml.stream.events.StartElement)30 QName (javax.xml.namespace.QName)15 XMLEventReader (javax.xml.stream.XMLEventReader)12 Attribute (javax.xml.stream.events.Attribute)12 Characters (javax.xml.stream.events.Characters)11 XMLStreamException (javax.xml.stream.XMLStreamException)10 XMLInputFactory (javax.xml.stream.XMLInputFactory)9 InputStream (java.io.InputStream)5 ArrayList (java.util.ArrayList)5 HashMap (java.util.HashMap)4 Test (org.junit.Test)4 IOException (java.io.IOException)3 Namespace (javax.xml.stream.events.Namespace)3 ByteArrayInputStream (java.io.ByteArrayInputStream)2 FileNotFoundException (java.io.FileNotFoundException)2 BigInteger (java.math.BigInteger)2 Base64 (java.util.Base64)2 Iterator (java.util.Iterator)2