我知道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/