Java в Android Studio с использованием XmlPullParser - PullRequest
0 голосов
/ 29 января 2020

Я следую инструкциям, написанным здесь: 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"); почему это не было нужно раньше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...