Android XmlPullParser анализирует похожие узлы

У меня есть несколько узлов xml, которые мне нужно проанализировать:

<start-valid-time period-name="Overnight">2013-12-29T00:00:00-05:00</start-valid-time>
<start-valid-time period-name="Sunday">2013-12-29T06:00:00-05:00</start-valid-time>
<start-valid-time period-name="Sunday Night">2013-12-29T18:00:00-05:00</start-valid-time>
<start-valid-time period-name="Monday">2013-12-30T06:00:00-05:00</start-valid-time>

Мой код:

if(parser.getName().equalsIgnoreCase("start-valid-time")) {
   periodnames[0] = parser.getAttributeValue(0);
}

Я отлично получаю первый атрибут имени периода, но если я попробую это:

if(parser.getName().equalsIgnoreCase("start-valid-time")) {
   periodnames[0] = parser.getAttributeValue(0);
   parser.nextTag();
   periodnames[1] = parser.getAttributeValue(0);
}

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

Если кто-то может помочь, это будет оценено .-.


person user3047494    schedule 29.12.2013    source источник
comment
есть только 1 атрибут для start-valid-time. так почему это periodnames[1] = parser.getAttributeValue(0);   -  person Raghunandan    schedule 29.12.2013
comment
Ну, я хочу перейти к следующему стартовому времени... я очень новичок в синтаксическом анализе xml   -  person user3047494    schedule 29.12.2013
comment
Извините, я понимаю, что то, что я спросил, не работает, так как... извините. Да, есть только один атрибут, но мне нужно значение этого атрибута для каждого времени начала действия. Вот почему у меня есть массив › Periodnames, который в каждом индексе будет включать каждое значение атрибута start-valid-timeje после анализа, например, Overnight, Sunday, Monday и т. д.   -  person user3047494    schedule 29.12.2013
comment
это не массив, он получает атрибут следующего тега   -  person Raghunandan    schedule 29.12.2013


Ответы (1)


XML

<?xml version="1.0" ?>
<start-valid-time period-name="Overnight">2013-12-29T00:00:00-05:00</start-valid-time>
<start-valid-time period-name="Sunday">2013-12-29T06:00:00-05:00</start-valid-time>
<start-valid-time period-name="Sunday Night">2013-12-29T18:00:00-05:00</start-valid-time>
<start-valid-time period-name="Monday">2013-12-30T06:00:00-05:00</start-valid-time>

Разобрать и получить атрибут

Для проверки я поместил xml в папку Assests. in это InputStream.

 InputStream in = MainActivity.this.getResources()
                 .getAssets().open("xmlparser.xml");
 try {
            XmlPullParser parser = Xml.newPullParser();
            parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
            parser.setInput(in, null);
            parser.nextTag();
            readFeed(parser);
        } catch(Exeption e)
            {
                 e.prinstStacktrace();
            }finally {
            in.close();
        }

потом

  private void readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
            String name=null,value;
            while (parser.getEventType() == XmlPullParser.START_TAG && (parser.getEventType() != XmlPullParser.END_TAG)) {
                   value = parser.getAttributeValue(null, "period-name");
                    name = readText(parser);
                    Log.i("Name.....",name);
                    Log.i("Value ...",value);
                    parser.next();
                    continue;
            }  

        }

читатьтекст

  private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
        String result = "";
        if (parser.next() == XmlPullParser.TEXT) {
            result = parser.getText();
            parser.nextTag();
        }
        return result;
    }

Журнал

12-29 03:01:23.433: I/Name.....(3273): 2013-12-29T00:00:00-05:00
12-29 03:01:23.433: I/Value ...(3273): Overnight
12-29 03:01:23.433: I/Name.....(3273): 2013-12-29T06:00:00-05:00
12-29 03:01:23.443: I/Value ...(3273): Sunday
12-29 03:01:23.443: I/Name.....(3273): 2013-12-29T18:00:00-05:00
12-29 03:01:23.443: I/Value ...(3273): Sunday Night
12-29 03:01:23.443: I/Name.....(3273): 2013-12-30T06:00:00-05:00
12-29 03:01:23.443: I/Value ...(3273): Monday
person Raghunandan    schedule 29.12.2013