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

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

Войти
Регистрация
Восстановить пароль
 
Iron Acorn
12 / 12 / 1
Регистрация: 28.09.2012
Сообщений: 39
#1

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

23.10.2012, 21:59. Просмотров 569. Ответов 2
Метки нет (Все метки)

Добрый вечер!
Пытаюсь парсить xml файл, который находится на флешке.
Проблема, в том, что парсер вообще не реагирует на теги, только на начало документа.

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
private void parseXml() {
        try {
              // открываем поток для чтения
            File sdPath = Environment.getExternalStorageDirectory();
            // добавляем свой каталог к пути
            sdPath = new File(sdPath.getAbsolutePath() + "/" + "dvm/");
            // формируем объект File, который содержит путь к файлу
            File sdFile = new File(sdPath, "data.xml");
              br = new BufferedReader(new FileReader(sdFile));
              String str = "";
              // читаем содержимое
              while ((str = br.readLine()) != null) {Log.d("readFile",str);} 
            } catch (FileNotFoundException e) {
              e.printStackTrace();
            } catch (IOException e) {
              e.printStackTrace();
            }
        String tmp = "";
        try {
              XmlPullParser xpp = Xml.newPullParser();
              xpp.setInput(br);
              while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
                switch (xpp.getEventType()) {
                // начало документа
                case XmlPullParser.START_DOCUMENT:
                    Log.d("Parse", "START_DOCUMENT");
                  break;
                // начало тэга
                case XmlPullParser.START_TAG:
                    Log.d("Parse", "START_TAG");
                    tmp = xpp.getName();
                  break;
                // конец тэга
                case XmlPullParser.END_TAG:
                    Log.d("Parse", "END_TEG");
                  break;
                // содержимое тэга
                case XmlPullParser.TEXT:
                    Log.d("Parse", "TEXT");
                    if(tmp.equals("title"))
                        vector.addElement(new String(xpp.getText()));
                  break;
 
                default:
                  break;
                }
                // следующий элемент
                xpp.next();
              }
              Log.d("Parse", "END_DOCUMENT");
 
            } catch (XmlPullParserException e) {
              e.printStackTrace();
            } catch (IOException e) {
              e.printStackTrace();
            }
 }
0
Миниатюры
XmpPullParser   XmpPullParser  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
23.10.2012, 22:25 #2
судя по тому, что не вывелось END_DOCUMENT, у вас вывалился какой-то екзепшен.

Добавлено через 1 минуту
а это ниче, что вы засунули в XmlPullParser уже прочитанный до конца BufferedReader?
1
Iron Acorn
12 / 12 / 1
Регистрация: 28.09.2012
Сообщений: 39
23.10.2012, 22:37  [ТС] #3
Цитата Сообщение от V0v1k Посмотреть сообщение
судя по тому, что не вывелось END_DOCUMENT, у вас вывалился какой-то екзепшен.

Добавлено через 1 минуту
а это ниче, что вы засунули в XmlPullParser уже прочитанный до конца BufferedReader?
Меня тоже смутило данное действие. Повелся на сообщение на одном из форумов(или я его не правильно понял): "Чтобы парсить док с SD, сначала читаете его в какой-нибудь Reader, а потом даете на вход методу xpp.setInput"
Спасибо заработало.
0
Ответ Создать тему
Опции темы

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