Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Frequencies
0 / 0 / 2
Регистрация: 25.09.2011
Сообщений: 49
#1

XmlPullParser - Программирование Android

22.02.2013, 22:44. Просмотров 1054. Ответов 0
Метки нет (Все метки)

Добрый день, столкнулся с проблемой парсинга XML такого вида:

То что мне надо выдрать
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<lfm status="ok">
    <events xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" artist="Armin van Buuren" festivalsonly="0" page="1" perPage="50" totalPages="1" total="17">
        <event xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
            <title>ULTRA Buenos Aires 2013 - Dia 2</title>
            <artists>
                <artist>Armin van Buuren</artist>
                <artist>Markus Schulz</artist>
                <headliner>Armin van Buuren</headliner>
            </artists>
            <venue>
                <location>
                    <city>Ciudad de Buenos Aires</city>
                    <country>Argentina</country>
                    <geo:point>
                        <geo:lat>-34.61135</geo:lat>
                        <geo:long>-58.35838</geo:long>
                    </geo:point>
                </location>
            </venue>
            <startDate>Sat, 23 Feb 2013 17:58:01</startDate>
            <description/>
        </event>
    </events>
</lfm>
Проблема заключается в том, что я паршу нормально до <headliner> включительно, а дальше парсинг прекращается. Делал по данному трейнингу.
Я так понимаю, что проблема в том, что после </artists> оно не хочет переходить к следующему тэгу
Собственно вопрос: не могли бы вы подсказать как правильно парсить подобного вида хмэлину

Вот мой код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
while (parser.next() != XmlPullParser.END_TAG) {
            if (parser.getEventType() != XmlPullParser.START_TAG) {
                continue;
            }
            String tag = parser.getName();
            MyLog.d(TAG, "tag == " + tag);
            if (tag.equals("title")) {
                title = readTitle(parser);
                MyLog.d(TAG, "tag == " + tag + ": " + title);
            } else if (tag.equals("artists")) {
                MyLog.d(TAG, "tag == " + tag);
            } else if (tag.equals("artist")) {
                if (artists == null) {
                    artists = readArtist(parser);
                } else {
                    artists += ", " + readArtist(parser);
                }
                MyLog.d(TAG, "tag == " + tag + ": " + artists);
            } else if (tag.equals("headliner")) {
                artists += ", " + readHeadliner(parser);
                MyLog.d(TAG, "tag == " + tag + ": " + artists);
                parser.nextTag();
            } else if (tag.equals("venue")) {
                MyLog.d(TAG, "tag == " + tag);
            } else if (tag.equals("location")) {
                MyLog.d(TAG, "tag == " + tag);
            } else if (tag.equals("city")) {
                city = readCity(parser);
                MyLog.d(TAG, "tag == " + tag + ": " + city);
            } else if (tag.equals("country")) {
                country = readCountry(parser);
                MyLog.d(TAG, "tag == " + tag + ": " + country);
            } else if (tag.equals("geo:point")) {
                MyLog.d(TAG, "tag == " + tag);
            } else if (tag.equals("geo:lat")) {
                geoLat = readGeoLat(parser);
                MyLog.d(TAG, "tag == " + tag + ": " + geoLat);
            } else if (tag.equals("geo:long")) {
                geoLong = readGeoLong(parser);
                MyLog.d(TAG, "tag == " + tag + ": " + geoLong);
            } else if (tag.equals("startDate")) {
                date = readDate(parser);
                MyLog.d(TAG, "tag == " + tag + ": " + date);
            } else if (tag.equals("description")) {
                description = readDescription(parser);
                MyLog.d(TAG, "tag == " + tag + ": " + description);
            } else {
                skip(parser);
            }
 
        }
 
private String readTitle(XmlPullParser parser) throws IOException,
            XmlPullParserException {
        MyLog.d(TAG, "readTitle");
        parser.require(XmlPullParser.START_TAG, ns, "title");
        String name = readText(parser);
        parser.require(XmlPullParser.END_TAG, ns, "title");
        return name;
    }
 
private String readText(XmlPullParser parser) throws IOException,
            XmlPullParserException {
        MyLog.d(TAG, "readText");
        String result = "";
        if (parser.next() == XmlPullParser.TEXT) {
            result = parser.getText();
            parser.nextTag();
        }
        return result;
    }
 
private void skip(XmlPullParser parser) throws XmlPullParserException,
            IOException {
 
        MyLog.d(TAG, "skip");
 
        if (parser.getEventType() != XmlPullParser.START_TAG) {
            throw new IllegalStateException();
        }
        int depth = 1;
        while (depth != 0) {
            switch (parser.next()) {
            case XmlPullParser.END_TAG:
                depth--;
                break;
            case XmlPullParser.START_TAG:
                depth++;
                break;
            }
        }
    }
add: смог получить еще координаты, добавив после артистов parser.nextTag();, а вот до описания добраться не получается

Целая XML
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<lfm status="ok">
    <events xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" artist="Armin van Buuren" festivalsonly="0" page="1" perPage="50" totalPages="1" total="17">
        <event xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
            <id>3353053</id>
            <title>ULTRA Buenos Aires 2013 - Dia 2</title>
            <artists>
                <artist>Armin van Buuren</artist>
                <artist>Afrojack</artist>
                <artist>Markus Schulz</artist>
                <artist>Sander van Doorn</artist>
                <artist>Knife Party</artist>
                <artist>Carl Cox</artist>
                <artist>Omnia</artist>
                <artist>Jeff Mills</artist>
                <artist>UMEK</artist>
                <artist>Heatbeat</artist>
                <artist>Marco Carola</artist>
                <artist>Tenishia</artist>
                <artist>Beltek</artist>
                <artist>Nina Kraviz</artist>
                <artist>Antillas</artist>
                <artist>The Zombie Kids</artist>
                <artist>Elio Riso</artist>
                <artist>Dasha Rush</artist>
                <artist>DJ Mika</artist>
                <artist>Mariano Trocca</artist>
                <artist>NACHO CASCO</artist>
                <artist>Marcelo Fratini</artist>
                <artist>Adrian de Bernardi</artist>
                <artist>Manu Desrets</artist>
                <headliner>Armin van Buuren</headliner>
            </artists>
            <venue>
                <id>8778836</id>
                <name>Costanera Sur</name>
                <location>
                    <city>Ciudad de Buenos Aires</city>
                    <country>Argentina</country>
                    <street>Av. Espana 2230</street>
                    <postalcode/>
                    <geo:point>
                        <geo:lat>-34.61135</geo:lat>
                        <geo:long>-58.35838</geo:long>
                    </geo:point>
                </location>
                <url>http://www.last.fm/venue/8778836+Costanera+Sur</url>
                <website/>
                <phonenumber/>
                <image size="small">http://userserve-ak.last.fm/serve/34/54798997.jpg</image>
                <image size="medium">http://userserve-ak.last.fm/serve/64/54798997.jpg</image>
                <image size="large">http://userserve-ak.last.fm/serve/126/54798997.jpg</image>
                <image size="extralarge">http://userserve-ak.last.fm/serve/252/54798997.jpg</image>
            </venue>
            <startDate>Sat, 23 Feb 2013 17:58:01</startDate>
            <description/>
            <image size="small">http://userserve-ak.last.fm/serve/34/83063099.jpg</image>
            <image size="medium">http://userserve-ak.last.fm/serve/64/83063099.jpg</image>
            <image size="large">http://userserve-ak.last.fm/serve/126/83063099.jpg</image>
            <image size="extralarge">http://userserve-ak.last.fm/serve/252/83063099.jpg</image>
            <attendance>45</attendance>
            <reviews>0</reviews>
            <tag>lastfm:event=3353053</tag>
            <url>http://www.last.fm/festival/3353053+ULTRA+Buenos+Aires+2013+-+D%C3%ADa+2</url>
            <website>http://ultrabuenosaires.com/</website>
            <tickets></tickets>
            <cancelled>0</cancelled>
            <tags>
                <tag>electronic</tag>
            </tags>
        </event>
    </events>
</lfm>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2013, 22:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос XmlPullParser (Программирование Android):

Медленный XmlPullParser - Программирование Android
Всем привет! Собственно проблема всего лишь в скорости работы, по логам посмотрел что медленно грузит так это именно: ...

Самозакрывающийся тег XmlPullParser - Программирование Android
Здравствуйте уважаемые форумчане! Возникла проблемка: не могу спарсить самозакрывающийся тег: &lt;string/&gt; Когда парсер нактнется на...

RSS reader by XmlPullParser + Listview - Программирование Android
Написал программу для чтения RSS: https://github.com/PhantomRec/RSS Всё работает, но проблема в том, что показывает 5-7 тем, далее...

XmlPullParser неправильно получает значения - Программирование Android
Здравствуйте. Пытаюсь написать обработку XML сообщения от сервера, получить правильно данные (ссылку на изображение и имя), загрузить...

XMLPullParser чтение русских символов - Программирование Android
Здравствуйте. Согласно заданию, необходимо написать парсер, который будет эммм... парсить(масло масленое) вот эту вот страницу...

XmlPullParser - проверка существования атрибута - Программирование Android
Добрый день. Возникла необходимость проверять наличие в xml файле какого-либо атрибута. Подскажите метод, если таковой есть. В гугле и...

Медленный XmlPullParser - Программирование Android
Всем привет! Собственно проблема всего лишь в скорости работы, по логам посмотрел что медленно грузит так это именно: ...

Самозакрывающийся тег XmlPullParser - Программирование Android
Здравствуйте уважаемые форумчане! Возникла проблемка: не могу спарсить самозакрывающийся тег: &lt;string/&gt; Когда парсер нактнется на...

RSS reader by XmlPullParser + Listview - Программирование Android
Написал программу для чтения RSS: https://github.com/PhantomRec/RSS Всё работает, но проблема в том, что показывает 5-7 тем, далее...

XmlPullParser неправильно получает значения - Программирование Android
Здравствуйте. Пытаюсь написать обработку XML сообщения от сервера, получить правильно данные (ссылку на изображение и имя), загрузить...

XMLPullParser чтение русских символов - Программирование Android
Здравствуйте. Согласно заданию, необходимо написать парсер, который будет эммм... парсить(масло масленое) вот эту вот страницу...

XmlPullParser - проверка существования атрибута - Программирование Android
Добрый день. Возникла необходимость проверять наличие в xml файле какого-либо атрибута. Подскажите метод, если таковой есть. В гугле и...

Медленный XmlPullParser - Программирование Android
Всем привет! Собственно проблема всего лишь в скорости работы, по логам посмотрел что медленно грузит так это именно: ...

Самозакрывающийся тег XmlPullParser - Программирование Android
Здравствуйте уважаемые форумчане! Возникла проблемка: не могу спарсить самозакрывающийся тег: &lt;string/&gt; Когда парсер нактнется н

Медленный XmlPullParser - Программирование Android
Всем привет! Собственно проблема всего лишь в скорости работы, по логам посмотрел что медленно грузит так это именно: ...

Самозакрывающийся тег XmlPullParser - Программирование Android
Здравствуйте уважаемые форумчане! Возникла проблемка: не могу спарсить самозакрывающийся тег: &lt;string/&gt; Когда парсер нактнется на...

RSS reader by XmlPullParser + Listview - Программирование Android
Написал программу для чтения RSS: https://github.com/PhantomRec/RSS Всё работает, но проблема в том, что показывает 5-7 тем, далее...

XmlPullParser неправильно получает значения - Программирование Android
Здравствуйте. Пытаюсь написать обработку XML сообщения от сервера, получить правильно данные (ссылку на изображение и имя), загрузить...

XMLPullParser чтение русских символов - Программирование Android
Здравствуйте. Согласно заданию, необходимо написать парсер, который будет эммм... парсить(масло масленое) вот эту вот страницу...

XmlPullParser - проверка существования атрибута - Программирование Android
Добрый день. Возникла необходимость проверять наличие в xml файле какого-либо атрибута. Подскажите метод, если таковой есть. В гугле и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
0
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.