调用getElementText()后,StAX获取当前事件

时间:2012-03-22 15:34:53

标签: java xml stax

根据stax specificationgetElementText()会返回文本数据,并将当前事件设为END_ELEMENT

我如何才能访问此END_ELEMENT,因为XMLEventReader没有任何方法可以访问当前事件? peek()next()方法在XML中提供下一个事件。

1 个答案:

答案 0 :(得分:1)

你最好解释事件

            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