Android XmlPullParser中的next()和nextTag()有什么区别?

Android XmlPullParser中的next()和nextTag()有什么区别?,android,xml,tags,xmlpullparser,Android,Xml,Tags,Xmlpullparser,我知道nextTag()会转到下一个标记,可以是start或end标记。下一步呢?是否根据内容转到下一个文本/标记 例如,如果我们有xml: <summary type="html"> <p>I have an Application that requires a data file...</p> </summary> 它只从summary标记开始调用1 next(),并从中提取文本。它不应该调用next()两次以获取

我知道nextTag()会转到下一个标记,可以是start或end标记。下一步呢?是否根据内容转到下一个文本/标记

例如,如果我们有xml:

<summary type="html">
            <p>I have an Application that requires a data file...</p>

</summary>
它只从summary标记开始调用1 next(),并从中提取文本。它不应该调用next()两次以获取文本,因为这样做一次只会到达p标记吗


谢谢

next()和nextTag()有什么区别:

假设您在
next()
方法中编写了一些代码。当执行
nextTag()
方法时,它首先调用
next()
方法,然后如果元素包含START\u标记或END\u标记,则返回相应的事件,否则它将通过异常

来自官方文件:

next()

Get next parsing event(获取下一个解析事件)-将合并元素内容,并且对于整个元素内容只必须返回一个文本事件(注释和处理指令将被忽略,实体引用必须展开,或者如果实体引用无法展开,则抛出异常事件)

nextTag()


调用next()并返回事件(如果它是START\u标记或END\u标记),否则会引发异常。

Hi,因此在这种情况下,调用next()后,下一个元素应该是p标记(从summary标记开始)?实际上,如果标记内部有3个连续的。然后next()将带您进入下一个标记。当你到达最后一个,它不会带你到其他地方,而是通过一个例外
private String readSummary(XmlPullParser parser) throws IOException, XmlPullParserException {
    parser.require(XmlPullParser.START_TAG, ns, "summary");
    String summary = readText(parser);
    parser.require(XmlPullParser.END_TAG, ns, "summary");
    return summary;
}

// For the tags title and summary, extracts their text values.
private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
    String result = "";
    if (parser.next() == XmlPullParser.TEXT) {
        result = parser.getText();
        parser.nextTag();
    }
    return result;
}