java - 如何使用 StAX XML 解析器捕获属性事件?

标签 java xml stax woodstox

我尝试使用 StAX XML 解析器解析 XML 文件。它给我 START_ELEMENTEND_DOCUMENT 事件,但没有 ATTRIBUTE 事件。如何使用 StAX 解析器接收 ATTRIBUTE 事件?

我的 XML:

    <?xml version="1.0" encoding="utf-8"?>
    <posts>
        <row name="Jonas"/>
        <row name="John"/>
    </posts>

我的 StAX XML 解析器:

public class XMLParser {

    public void parseFile(String filename) {
        XMLInputFactory2 xmlif = (XMLInputFactory2) XMLInputFactory2.newInstance();
        xmlif.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, Boolean.FALSE);
        xmlif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.FALSE);
        xmlif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE);
        xmlif.configureForSpeed();

        XMLStreamReader2 xmlr = (XMLStreamReader2) 
                xmlif.createXMLStreamReader(new FileInputStream(filename));

                int eventType;
                while(xmlr.hasNext()) {
                    eventType = xmlr.next();
                    switch(eventType) {
                    case XMLStreamConstants.START_ELEMENT: 
                        if(xmlr.getName().toString().equals("row")) {
                            System.out.println("row");
                        }
                        break;
                    case XMLStreamConstants.ATTRIBUTE: 
                        System.out.println("Attribute");
                        break;
                    case XMLStreamConstants.END_DOCUMENT:
                        System.out.println("END");
                        xmlr.close();
                        break;
                    }
                }

    }

    public static void main(String[] args) {
        XMLParser p = new XMLParser();
        String filename = "data/test.xml";
        p.parseFile(filename);
    }

}

最佳答案

您可以在START_ELEMENT 状态下获取属性。请参阅 XMLStreamReader 上的 getAttribute* 方法:

关于java - 如何使用 StAX XML 解析器捕获属性事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7435674/

相关文章:

html - 这是什么数据格式?

具有嵌套元素的 Python LXML 迭代解析

java - 使用 StAx 解析 XML 文件时出错

java - java中如何从对象引用中获取值

java - 如何在oracle中查看由启用hibernate的java程序执行的最近sql命令的事务日志(带有时间和性能信息)

java - 当选择/未选择单选按钮时如何隐藏文本字段?

java - XMLEventWriter 从头开始​​ : how do I emit xmlns attribute?

java.net.SocketTimeoutException : Read timed out error when trying to read from table

Android TabWidget 不同标签的不同xml文件

Java:IndentingXMLStreamWriter 替代方案?