Урок 79. XmlPullParser. Парсим XML

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 79. XmlPullParser. Парсим XML

Сообщение damager82 » 16 май 2012, 23:00

В этом уроке:
- парсим XML с помощью XmlPullParser


Click here to read this article!
Последний раз редактировалось damager82 19 май 2017, 10:20, всего редактировалось 10 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
MeTeOpA
Сообщения: 85
Зарегистрирован: 07 мар 2012, 12:50

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение MeTeOpA » 17 май 2012, 04:31

Хорошая вещь... Сам пользуюсь...

jenyit
Сообщения: 2
Зарегистрирован: 17 май 2012, 17:05

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение jenyit » 17 май 2012, 17:14

Здравствуйте, просто супер уроки! Большое спасибо вам за них! Есть просьба помогите из спарсиного файла данные занести в БД и вывести к примеру первах 20 файлов в виде списка) Большое спасибо.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение damager82 » 18 май 2012, 08:50

jenyit писал(а):Здравствуйте, просто супер уроки! Большое спасибо вам за них! Есть просьба помогите из спарсиного файла данные занести в БД и вывести к примеру первах 20 файлов в виде списка) Большое спасибо.
Не очень понял в чем вопрос :) БД, списки, файлы, парсинг - по всем этим темам есть уроки на сайте. Напишите, что конкретно вызывает у вас затруднения.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

jenyit
Сообщения: 2
Зарегистрирован: 17 май 2012, 17:05

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение jenyit » 18 май 2012, 09:38

Здравствуйте, пишу конкретнее. Есть XML файл хранящий данные(к примеру телефоны и их там 100 моделей и у каждого есть еще свои какие-то описания: вес цвет и тд.), надо его спарсить и данные занести в БД, причем первых 20 телефонов вывести на экране ввиде списка и в каждом элементе списка должно отображаться модель телефона вес и ешо что нить. СПС :D

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение andev » 19 май 2012, 16:15

У вас 3 отдельных задачи.
Вам необходимо создать базу данных, в ней таблицу (желательно несколько, но для простоты хотя бы одну) которая будет содержать ВСЕ возможные параметры телефона, т.е. если, скажем, у вас есть "Nokia 1100, Black" и "Samsung U870 Red Slider 5Mpx" то таблица будет содержать {Brand, model, Color, Type, Camera}, даже если у одного из аппаратов этой информации нет (Nokia без камеры), то в соответствующие поля будет записана информация "-". Можете не придумывать сами, а пройтись по паре каталогов онлайн магазинов, они все уже придумали за вас и поместили в фильтры.
Далее парсинг - я бы создал класс Phone, содержащий все поля, которые может хранить таблица, ArrayList<Phone>, заполнил бы его данными из XML по уроку. Потом в зависимости от того как вы подключаетесь к БД, сформировал бы запрос и выполнил его (занес данные в базу).
После этого задача отображения - тут уже масса вариантов, во что вы хотите выводить и как отображать, но предполагаю, что это будет ListView с переопределенным элементом, в который вы поместите информацию, необходимую для вывода (я очень надеюсь, что не всю, т.к. иначе теряется смысл, лучше всего модель, фото, тип корпуса и разрешение камеры+экрана, все остальные характеристики на отдельную активити по щелчку на списке)

algebra
Сообщения: 7
Зарегистрирован: 17 апр 2012, 11:04

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение algebra » 08 июн 2012, 13:20

подскажите пожалуйста
а парсинг HTML с удаленного сайта будет отличаться от парсинга приведенного в этом уроке?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение damager82 » 13 июн 2012, 09:11

algebra писал(а):подскажите пожалуйста
а парсинг HTML с удаленного сайта будет отличаться от парсинга приведенного в этом уроке?
Только тем, что данные берете из веба, а не из файла.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
vgavt
Сообщения: 8
Зарегистрирован: 12 апр 2012, 15:45

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение vgavt » 14 июн 2012, 08:43

Тема , как говорится, в тему!
Мне из конторы присылают HTML документ-просто сохраненная интернет страничка.
Делаю следующее(по уроку):
1 Перевожу html в xml с помощью xmlPad.(не по уроку)
2 Закидываю в res/xml.
3 С помощью XmlPullParser'a считываю Info.
4 Далее планировалось переводить все в ListView, но возникла проблема:

Дерево ветвистое получается.Данные которые мне нужны находятся на 14 глубине. Но не беда. Загвоздка в следующем -почему условие по xpp.getDepth() срабатывает,

Код: Выделить всё

if(xpp.getDepth()==14)Log.d(LOG_TAG, "START_TAG: name = " + xpp.getName()
							+ ", depth = " + xpp.getDepth() + ", attrCount = "
							+ xpp.getAttributeCount());
а по xpp.getName() -нет?

Код: Выделить всё

if(xpp.getName()=="phone")Log.d(LOG_TAG, "START_TAG: name = " + xpp.getName()
							+ ", depth = " + xpp.getDepth() + ", attrCount = "
							+ xpp.getAttributeCount());
Подскажите как поступить в этом случае?
Или как парсить сразу html документ с SD Card?

PS интернета у нас нет :lol: . инфу скидывают по INMARSAT C

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение damager82 » 15 июн 2012, 11:59

vgavt писал(а):Подскажите как поступить в этом случае?
Или как парсить сразу html документ с SD Card?
Попробуйте проверять равенство не с помощью "==", а методом equalsIgnoreCase.

Чтобы парсить док с SD, сначала читаете его в какой-нибудь Reader (урок 75), а потом даете на вход методу xpp.setInput.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

smeh
Сообщения: 4
Зарегистрирован: 31 май 2012, 08:37

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение smeh » 19 июн 2012, 09:03

StartDocument срабатывает 2 раза из-за вот этих двух строк:

<?xml version="1.0" encoding="utf-8"?>
<data>

если убрать верхнюю, то будет 1 раз, как у вас и получилось в конечном примере.

Видимо он срабатывает на каждую "<" в "корне"..... имхо...

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение damager82 » 19 июн 2012, 09:32

smeh писал(а):StartDocument срабатывает 2 раза из-за вот этих двух строк:
Я убираю и у меня все равно два раза.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Stylish2011
Сообщения: 8
Зарегистрирован: 21 июн 2012, 16:25

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение Stylish2011 » 22 июн 2012, 13:06

А скажите куда конкретно, адрес запроса писать???

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение damager82 » 29 июн 2012, 14:35

Stylish2011 писал(а):А скажите куда конкретно, адрес запроса писать???
Какого запроса?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение rezak90 » 11 июл 2012, 16:27

а умеет ли XmlPullParser парсить [CDATA] блоки? в интернете есть какие то примеры но что то ничего не ясно.

вроде как умеет, но что то ничего не получается, делаю следущее:

Код: Выделить всё

case XmlPullParser.CDSECT:
String localName = xpp.getName(), prefix = xpp.getPrefix(), uri = xpp.getNamespace();
Log.i("MyTag", "CDATA section start, localName = " + localName);
Log.i("MyTag", "CDATA section, prefix = " + prefix);
Log.i("MyTag", "CDATA section, uri = " + uri);
Log.i("MyTag", "CDATA section end, text = " + xpp.getText());
break;
лажа получается, XmlPullParser.CDSECT вылазит на каждом прогоне в цикле и соответственно в логе одни null кроме localName
R.id.team
Политика на форуме запрещена

Аватара пользователя
vgavt
Сообщения: 8
Зарегистрирован: 12 апр 2012, 15:45

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение vgavt » 25 июл 2012, 07:22

[quote="damager82"][/quote] Cпасибо, заработало!

katso
Сообщения: 5
Зарегистрирован: 13 апр 2012, 08:03

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение katso » 27 авг 2012, 23:53

А есть ли возможность этим парсером получить содержимое всего тега, т.е. есть к примеру xml

Код: Выделить всё

<doc>
 <element>
     <item>
     text1
     </item>
     <item>
     text2
     </item>
 </element>
</doc>
Хочу получить содержимое тега element т.е.

Код: Выделить всё

<item>
     text1
     </item>
     <item>
     text2
</item>

для дальнейшего парсинга!

algebra
Сообщения: 7
Зарегистрирован: 17 апр 2012, 11:04

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение algebra » 01 сен 2012, 23:20

Выдает ошибку
main cannot be resolved or is not a field
line 21 setContentView(R.layout.main);
Помогите пожалуйста разобраться

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение Finch » 03 сен 2012, 01:12

у те6я есть файл main.xml в папке layouts?
CEO of a company R.id.team

algebra
Сообщения: 7
Зарегистрирован: 17 апр 2012, 11:04

Re: Урок 79. XmlPullParser. Парсим XML

Сообщение algebra » 04 сен 2012, 20:56

в папке layout а не layouts находится файл activity_main.xml и такой же в папке menu

Ответить