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

时间:2015-12-07 15:45:44

标签: android xml tags xmlpullparser

我知道nextTag()转到下一个标签,可以是开始或结束标签。那么下一个()呢?它是否会转到下一个文本/标签,具体取决于它是什么?

例如,如果我们有xml:

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

</summary>

假设解析器当前处于摘要开始标记,那么下一步()是否会在此之后立即移动到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;
}

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

由于

1 个答案:

答案 0 :(得分:1)

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

假设您已在List<List<string>> original = ... var sortedListOfList = original.Distinct(new ListComparer()).ToList() ; 方法中编写了一些代码。执行next()方法时,首先调用 nextTag() 方法,如果元素包含 START_TAG END_TAG ,则它会返回相应的事件,否则会通过异常。

来自官方文件:

<强> next()

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

<强> next()

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