StAX получает текущее событие после вызова getElementText () - PullRequest
1 голос
/ 22 марта 2012

За спецификацию stax , getElementText() возвращает текстовые данные и помещает текущее событие как END_ELEMENT.

Как мне получить доступ к этому END_ELEMENT, так как XMLEventReader не имеет никакого метода для доступа к текущему событию? Методы peek() и next() обеспечивают следующее событие в XML.

1 Ответ

1 голос
/ 22 марта 2012

Лучше от интерпретации событий

            while (eventReader.hasNext()) {
            XMLEvent event = eventReader.nextEvent();

            if (event.isStartElement()) {
                StartElement startElement = event.asStartElement();

                // check the element
                if (startElement.getName().getLocalPart() == ("MyTag")) {

                    // We read the attributes from this tag

                    @SuppressWarnings("unchecked")
                    Iterator<Attribute> attributes = (Iterator<Attribute>) startElement
                            .getAttributes();
                    while (attributes.hasNext()) {
                        Attribute attribute = attributes.next();
                        if (attribute.getName().toString().equals("myattribute")) {
                            System.out.println("Attribute Value: " + attribute.getValue());
                        }
                    }
                }

                if (event.isEndElement()) {
                EndElement endElement = event.asEndElement();
                    if (endElement.getName().getLocalPart() == ("MyTag")) { 
                    // do Something 
                    }
                }
            } // end while
...