Урок 79. XmlPullParser. Парсим XML
Урок 79. XmlPullParser. Парсим XML
В этом уроке:
- парсим XML с помощью XmlPullParser
Click here to read this article!
- парсим XML с помощью XmlPullParser
Click here to read this article!
Последний раз редактировалось damager82 19 май 2017, 10:20, всего редактировалось 10 раз.
Re: Урок 79. XmlPullParser. Парсим XML
Хорошая вещь... Сам пользуюсь...
Re: Урок 79. XmlPullParser. Парсим XML
Здравствуйте, просто супер уроки! Большое спасибо вам за них! Есть просьба помогите из спарсиного файла данные занести в БД и вывести к примеру первах 20 файлов в виде списка) Большое спасибо.
Re: Урок 79. XmlPullParser. Парсим XML
Не очень понял в чем вопросjenyit писал(а):Здравствуйте, просто супер уроки! Большое спасибо вам за них! Есть просьба помогите из спарсиного файла данные занести в БД и вывести к примеру первах 20 файлов в виде списка) Большое спасибо.

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

Re: Урок 79. XmlPullParser. Парсим XML
У вас 3 отдельных задачи.
Вам необходимо создать базу данных, в ней таблицу (желательно несколько, но для простоты хотя бы одну) которая будет содержать ВСЕ возможные параметры телефона, т.е. если, скажем, у вас есть "Nokia 1100, Black" и "Samsung U870 Red Slider 5Mpx" то таблица будет содержать {Brand, model, Color, Type, Camera}, даже если у одного из аппаратов этой информации нет (Nokia без камеры), то в соответствующие поля будет записана информация "-". Можете не придумывать сами, а пройтись по паре каталогов онлайн магазинов, они все уже придумали за вас и поместили в фильтры.
Далее парсинг - я бы создал класс Phone, содержащий все поля, которые может хранить таблица, ArrayList<Phone>, заполнил бы его данными из XML по уроку. Потом в зависимости от того как вы подключаетесь к БД, сформировал бы запрос и выполнил его (занес данные в базу).
После этого задача отображения - тут уже масса вариантов, во что вы хотите выводить и как отображать, но предполагаю, что это будет ListView с переопределенным элементом, в который вы поместите информацию, необходимую для вывода (я очень надеюсь, что не всю, т.к. иначе теряется смысл, лучше всего модель, фото, тип корпуса и разрешение камеры+экрана, все остальные характеристики на отдельную активити по щелчку на списке)
Вам необходимо создать базу данных, в ней таблицу (желательно несколько, но для простоты хотя бы одну) которая будет содержать ВСЕ возможные параметры телефона, т.е. если, скажем, у вас есть "Nokia 1100, Black" и "Samsung U870 Red Slider 5Mpx" то таблица будет содержать {Brand, model, Color, Type, Camera}, даже если у одного из аппаратов этой информации нет (Nokia без камеры), то в соответствующие поля будет записана информация "-". Можете не придумывать сами, а пройтись по паре каталогов онлайн магазинов, они все уже придумали за вас и поместили в фильтры.
Далее парсинг - я бы создал класс Phone, содержащий все поля, которые может хранить таблица, ArrayList<Phone>, заполнил бы его данными из XML по уроку. Потом в зависимости от того как вы подключаетесь к БД, сформировал бы запрос и выполнил его (занес данные в базу).
После этого задача отображения - тут уже масса вариантов, во что вы хотите выводить и как отображать, но предполагаю, что это будет ListView с переопределенным элементом, в который вы поместите информацию, необходимую для вывода (я очень надеюсь, что не всю, т.к. иначе теряется смысл, лучше всего модель, фото, тип корпуса и разрешение камеры+экрана, все остальные характеристики на отдельную активити по щелчку на списке)
Re: Урок 79. XmlPullParser. Парсим XML
подскажите пожалуйста
а парсинг HTML с удаленного сайта будет отличаться от парсинга приведенного в этом уроке?
а парсинг HTML с удаленного сайта будет отличаться от парсинга приведенного в этом уроке?
Re: Урок 79. XmlPullParser. Парсим XML
Только тем, что данные берете из веба, а не из файла.algebra писал(а):подскажите пожалуйста
а парсинг HTML с удаленного сайта будет отличаться от парсинга приведенного в этом уроке?
Re: Урок 79. XmlPullParser. Парсим XML
Тема , как говорится, в тему!
Мне из конторы присылают HTML документ-просто сохраненная интернет страничка.
Делаю следующее(по уроку):
1 Перевожу html в xml с помощью xmlPad.(не по уроку)
2 Закидываю в res/xml.
3 С помощью XmlPullParser'a считываю Info.
4 Далее планировалось переводить все в ListView, но возникла проблема:
Дерево ветвистое получается.Данные которые мне нужны находятся на 14 глубине. Но не беда. Загвоздка в следующем -почему условие по xpp.getDepth() срабатывает,
а по xpp.getName() -нет?
Подскажите как поступить в этом случае?
Или как парсить сразу html документ с SD Card?
PS интернета у нас нет
. инфу скидывают по INMARSAT C
Мне из конторы присылают 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());
Код: Выделить всё
if(xpp.getName()=="phone")Log.d(LOG_TAG, "START_TAG: name = " + xpp.getName()
+ ", depth = " + xpp.getDepth() + ", attrCount = "
+ xpp.getAttributeCount());
Или как парсить сразу html документ с SD Card?
PS интернета у нас нет

Re: Урок 79. XmlPullParser. Парсим XML
Попробуйте проверять равенство не с помощью "==", а методом equalsIgnoreCase.vgavt писал(а):Подскажите как поступить в этом случае?
Или как парсить сразу html документ с SD Card?
Чтобы парсить док с SD, сначала читаете его в какой-нибудь Reader (урок 75), а потом даете на вход методу xpp.setInput.
Re: Урок 79. XmlPullParser. Парсим XML
StartDocument срабатывает 2 раза из-за вот этих двух строк:
<?xml version="1.0" encoding="utf-8"?>
<data>
если убрать верхнюю, то будет 1 раз, как у вас и получилось в конечном примере.
Видимо он срабатывает на каждую "<" в "корне"..... имхо...
<?xml version="1.0" encoding="utf-8"?>
<data>
если убрать верхнюю, то будет 1 раз, как у вас и получилось в конечном примере.
Видимо он срабатывает на каждую "<" в "корне"..... имхо...
Re: Урок 79. XmlPullParser. Парсим XML
Я убираю и у меня все равно два раза.smeh писал(а):StartDocument срабатывает 2 раза из-за вот этих двух строк:
-
- Сообщения: 8
- Зарегистрирован: 21 июн 2012, 16:25
Re: Урок 79. XmlPullParser. Парсим XML
А скажите куда конкретно, адрес запроса писать???
Re: Урок 79. XmlPullParser. Парсим XML
Какого запроса?Stylish2011 писал(а):А скажите куда конкретно, адрес запроса писать???
Re: Урок 79. XmlPullParser. Парсим XML
а умеет ли XmlPullParser парсить [CDATA] блоки? в интернете есть какие то примеры но что то ничего не ясно.
вроде как умеет, но что то ничего не получается, делаю следущее:
лажа получается, XmlPullParser.CDSECT вылазит на каждом прогоне в цикле и соответственно в логе одни null кроме localName
вроде как умеет, но что то ничего не получается, делаю следущее:
Код: Выделить всё
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;
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 79. XmlPullParser. Парсим XML
[quote="damager82"][/quote] Cпасибо, заработало!
Re: Урок 79. XmlPullParser. Парсим XML
А есть ли возможность этим парсером получить содержимое всего тега, т.е. есть к примеру xml
Хочу получить содержимое тега element т.е.
для дальнейшего парсинга!
Код: Выделить всё
<doc>
<element>
<item>
text1
</item>
<item>
text2
</item>
</element>
</doc>
Код: Выделить всё
<item>
text1
</item>
<item>
text2
</item>
для дальнейшего парсинга!
Re: Урок 79. XmlPullParser. Парсим XML
Выдает ошибку
main cannot be resolved or is not a field
line 21 setContentView(R.layout.main);
Помогите пожалуйста разобраться
main cannot be resolved or is not a field
line 21 setContentView(R.layout.main);
Помогите пожалуйста разобраться
Re: Урок 79. XmlPullParser. Парсим XML
у те6я есть файл main.xml в папке layouts?
CEO of a company R.id.team
Re: Урок 79. XmlPullParser. Парсим XML
в папке layout а не layouts находится файл activity_main.xml и такой же в папке menu