Я следую инструкциям, написанным здесь: https://developer.android.com/training/basics/network-ops/xml?fbclid=IwAR07rgvlNZjEu_g756ZhIUfu0G62SH3tNktbbc3jVcit4peZHFLGm9aE4V8#java
Меня смущает, когда руководство показывает код для чтения заголовка, например
private String readTitle(XmlPullParser parser) throws IOException, XmlPullParserException {
parser.require(XmlPullParser.START_TAG, ns, "title");
String title = readText(parser);
parser.require(XmlPullParser.END_TAG, ns, "title");
return title;
}
Почему вызовы parser.require необходимы как для START_TAG, так и для END_TAG, а не просто
private String readTitle(XmlPullParser parser) throws IOException, XmlPullParserException {
return readText(parser);
}
Второе замешательство возникает, когда руководство читает ссылку
private String readLink(XmlPullParser parser) throws IOException, XmlPullParserException {
String link = "";
parser.require(XmlPullParser.START_TAG, ns, "link");
String tag = parser.getName();
String relType = parser.getAttributeValue(null, "rel");
if (tag.equals("link")) {
if (relType.equals("alternate")){
link = parser.getAttributeValue(null, "href");
parser.nextTag();
}
}
parser.require(XmlPullParser.END_TAG, ns, "link");
return link;
}
В этом случае анализатор .nextTag (); вызывается перед parser.require (XmlPullParser.END_TAG, ns, "link"); почему это не было нужно раньше?