2016-08-24 9 views
0

Объявление о новичке Android: я новичок в Android, прошу, пожалуйста, на меня.Как использовать метод XmlPullParser.require()

Я вытягиваю свои волосы, пытаясь понять пример, в частности их использование parser.require() - под заголовком «Прочитать фид».

Да, я читал the documentation for XmlPullParser. Я должен быть идиотом, потому что я не могу понять.

Я также вырыл вокруг этих SO форумах и не удалось найти ответ, я лично мог разобрать :-)

Ладно, так что это бросает исключение, если параметры, передаваемые в не выполняются. Как это помогает мне, когда она применяется только к одному элементу?

Как я могу узнать, какие параметры необходимо передать методу?

Всегда ли это необходимо? Или просто иногда? Зачем?

Должен ли я использовать этот метод всякий раз, когда я разбираю XML? Где? Зачем?

Их пример, кажется, обращается к тегу «feed» в начале фида XML, но, похоже, он не сразу обращается к тегу «title». Почему они утверждают тег «feed», но не следующий тег «title»?

О, боже, я так смущен.

Мое расстройство с разработкой для Android растет не по себе, и эта небольшая проблема собирается отправить меня за край. Если бы кто-нибудь мог объяснить мне простым языком, зачем использовать метод .require(), и когда это будет уместно, я буду навсегда благодарен.

У меня нет собственного образца для отправки здесь, так как все, что я делаю, читает и пытается понять пример кода.

Заранее благодарим всех, кто пытается помочь мне в этом.

ответ

0

Сразу после публикации этого вопроса, я думаю, что понял, как работает .require(). Рассмотрим следующий фрагмент кода из developers.android.com:

parser.require(XmlPullParser.START_TAG, ns, "feed"); 
while (parser.next() != XmlPullParser.END_TAG) { 
    if (parser.getEventType() != XmlPullParser.START_TAG) { 
     continue; 
    } 
    String name = parser.getName(); 
    // Starts by looking for the entry tag 
    if (name.equals("entry")) { 
     entries.add(readEntry(parser)); 
    } else { 
     skip(parser); 
    } 
} 

... что я беру от этого в том, что с помощью .require() мы устанавливаем наш курсор START_TAG из " feed "- элемент верхнего уровня - и затем мы можем зайти в цикл, пока мы, наконец, не удалим END_TAG элемента фида, из которого мы первоначально поставили в очередь!

Таким образом, .require() не только проверяет точку входа для элемента xml, но также информирует анализатор о том, какой элемент вы входите, чтобы вы могли проходить через него, пока не нажмете закрывающий тег для этого конкретного элемент.

Легче понять, чем я дал кредит - извините за начальный критический пост!

+0

Эй, приятель. Вы выяснили ответы на все ваши вопросы сейчас? Я работаю над приложением, которое включает в себя анализ XML, и это привело меня сюда. –

+0

Привет, Сэмюэл, я забыл отметить свой собственный ответ как правильный. Быстро посмотрите, надеюсь, это имеет смысл. – Sashu

+0

Hi Sashu. У меня проблема с XMLPullParser. Когда вы используете parser.require (""), каждый тип события соответствует непосредственно тегу, установленному в методе require? –

0

Per Android's documentation, метод parser.require() использует эту подпись:

require(int type, String namespace, String name) 

...который помещает парсер в указанный элемент (name), в объявленном пространстве имен (namespace), в указанном типе события (type). Вот простой фрагмент XML, чтобы помочь вам визуализировать:

<foo>Hello World!</foo> 

parser.require(XmlPullParser.START_TAG, ns, "foo") первоначально очередь курсора к начальной метке Foo элемента: <foo>

parser.require(XmlPullParser.TEXT, ns, "foo") первоначально в очереди курсора на текст внутри элемента Foo: "Hello World!"

parser.require(XmlPullParser.END_TAG, ns, "foo") первоначально очереди курсор к конечному тегу Foo элемента: </foo>

Оттуда, где вы помещаете курсор в документ с помощью parser.require(), вы можете перебирать столько документов с помощью parser.next(), сколько захотите.

Как вы итерация, вы можете проверить каждое «событие», чтобы выяснить, какой тип это: START_TAG, TEXT, END_TAG или END_DOCUMENT. Ваша логика может обрабатывать каждое событие и его ценность в зависимости от ваших потребностей.

 Смежные вопросы

  • Нет связанных вопросов^_^