我知道nextTag()转到下一个标签,可以是开始或结束标签。那next()呢?是否根据其内容转到下一个文本/标签?

例如,如果我们有xml:

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

</summary>


假设解析器当前位于summary start标记处,那么将next()移至p标记或紧随其后的文本吗?我查看了Google网站上的代码,并执行了以下操作:

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;
}


它仅从summary标记开始调用1 next()并从中提取文本。它不应该两次调用next()来获取文本,因为一旦到达p标签就这样做吗?

谢谢

最佳答案

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

假设您已经在next()方法中编写了一些代码。当nextTag()方法执行时,它首先调用next()方法,然后,如果元素包含START_TAG或END_TAG,则它将返回适当的事件,否则将通过异常。

从官方文件:

next()

获取下一个解析事件-将合并元素内容,并且对于整个元素内容仅返回一个TEXT事件(注释和处理指令将被忽略,并且如果不能扩展实体引用,则必须扩展实体引用或抛出异常)。

nextTag()

调用next()并返回事件(如果它是START_TAG或END_TAG),否则引发异常。

关于android - XmlPullParser中的next()和nextTag()有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34137575/

10-11 22:28