Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 2
Регистрация: 25.09.2011
Сообщений: 49
1

XmlPullParser

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

Author24 — интернет-сервис помощи студентам
Добрый день, столкнулся с проблемой парсинга 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2013, 22:44
Ответы с готовыми решениями:

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

Изменения в XmlPullParser
Сегодня в почте увидел письмо от Гугла, что следует перейти на новую версию рекламного движка, так...

Самозакрывающийся тег XmlPullParser
Здравствуйте уважаемые форумчане! Возникла проблемка: не могу спарсить самозакрывающийся тег: ...

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

0
22.02.2013, 22:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2013, 22:44
Помогаю со студенческими работами здесь

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

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

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

XMLPullParser обрезает последний элемент
Есть следующий рабочий код: try { XmlPullParser parser =...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru