我知道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标签就会这样做吗?
由于
答案 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,否则抛出异常。