XmlPullParser - 如何跳转到匹配的END_TAG?

时间:2014-04-29 13:08:15

标签: xml xml-parsing xmlpullparser

<root>
    <element> <!-- When this is encountered... -->
        <element>text</element>
        <element>text</element>
        <element>
            <element>text</element>
        </element>
    </element> 
    <element> <!-- ...skip to here. -->
        <element>text</element>
        <element>text</element>
        <element>
            <element>text</element>
        </element>
    </element>
</root>

内部标记可以与外部标记具有相同的名称。在这种情况下,它们都被称为element

基本上,如果我在任何给定的START_TAG,我想跳到相应的END_TAG并继续从相同深度的下一个START_TAG进行解析。

1 个答案:

答案 0 :(得分:2)

在Android开发者网站上找到了一个代码段。

 private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
    if (parser.getEventType() != XmlPullParser.START_TAG) {
        throw new IllegalStateException();
    }
    int depth = 1;
    while (depth != 0) {
        switch (parser.next()) {
        case XmlPullParser.END_TAG:
            depth--;
            break;
        case XmlPullParser.START_TAG:
            depth++;
            break;
        }
    }
 }