java - 查找结束 XML 标记

标签 java xml parsing sax stax

我有一种方法可以只打印开始和结束 XML 标记之间的内容。我知道我的 XML 深度计数器有问题,但我不知道该把它放在哪里/修复它。这是 XML。

<XMS>
    <Object>
        <Property>
            <Value>1</Value>
        </Property>
    </Object>
</XMS>

这是 Java 代码...

    Boolean flag = false;

    while(reader.hasNext()) {
        eventType = reader.next();

        if(getEventType(eventType) == "START_ELEMENT" 
                && reader.getLocalName() == startTagName){
            flag = true;
            depth++;
            System.out.println(reader.getLocalName() + " Depth = " + depth);
        }
        else if(getEventType(eventType) == "END_ELEMENT"
                && flag == true
                && (depth == 0)){
            depth--;
            System.out.println(reader.getLocalName() + " Depth = " + depth + " BIG END");
            break;
        }
        else if(getEventType(eventType) == "START_ELEMENT"
                && flag == true){
            depth++;
            System.out.println(reader.getLocalName() + " Depth = " + depth);
        }
        else if(getEventType(eventType)== "END_ELEMENT"
                && flag == true){
            depth--;
            System.out.println(reader.getLocalName() + " Depth = " + depth + " END");
        }
    }
}

GetEventType 只是返回正确的事件类型(正常工作)。这是控制台的输出。

Object Depth = 1
Property Depth = 2
Value Depth = 3
Value Depth = 2 END
Property Depth = 1 END
Object Depth = 0 END
XMS Depth = -1 BIG END

问题是,当深度 = 0 时,它应该在最后一个对象上结束,并在达到 XMS 深度 = -1 之前停止。有什么建议吗?

最佳答案

是否可以像比较深度是否等于一而不是零一样简单?

当您位于“Object”元素内时,您的深度 == 1,因此当您遇到结束“Object”标签时,您应该检查

   ... && (depth == 1)

关于java - 查找结束 XML 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15528114/

相关文章:

java - 错误: RSA Keys must be at least 512 bits long?

java - 新的 SimpleDateFormat ("hh:mm a", Locale.getDefault()).parse ("04:30 PM")给出 Unparseable 异常

java - Java的四级继承

java - 如果我调用 scanner.hasNext 然后调用 scanner.next,我会扫描两次吗

java - 浏览服务器命名空间并访问自定义引用

java - JDOM : cannot find symbol getAttribute()

java - 启动屏幕后不显示主要 Activity

ios - TableView 中的警告

linux - 如何解析 shell 脚本中的命令输出

c - 在 C 中使用 strtok 解析输入