Проблема с парсингом xml файла

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
WmLiM
Сообщения: 1
Зарегистрирован: 06 окт 2013, 08:06

Проблема с парсингом xml файла

Сообщение WmLiM » 06 окт 2013, 08:47

Доброго времени суток всем!
Я PHP программист и в разработке под Android я начинающий, но есть огромное желание освоить все что смогу запомнить..

Я пытаюсь распарсить xml файл из res/xml Его содержимое:

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

<?xml version="1.0" encoding="utf-8"?>
<countriesTag>
    <cntryTag>
        <mainText value="sometext1" />
        <secondString value="sometext2" />
        <mcc value="1" />
    </cntryTag>
    <cntryTag>
        <mainText value="sometext3" />
        <secondString value="sometext4" />
        <mcc value="2" />
    </cntryTag>
</countriesTag>
Элементы управления(я так понял):

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

public static final String CS_TAG = "countriesTag";
	public static final String MAIN_TEXT_TAG = "mainText";
	public static final String SECOND_TEXT_TAG = "secondString";
	public static final String TAG_ID = "mcc";
	public static final String TEXTS_TAG = "cntryTag";
И сам код парсера(нашел на зубугорных просторах)

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

public static HashMap<String, HashMap<String, String>> getTexts(final XmlResourceParser xmlResourceParser) throws IOException {
        while (true) {
            final HashMap<String, HashMap<String, String>> hashMap = new HashMap<String, HashMap<String, String>>();
            while (true) {
                String attributeValue = null;
                Label_0207: {
                    try {
                        HashMap<String, String> hashMap2 = new HashMap<String, String>();
                        int i = 0;
                        final String s = "";
                        new String();
                        while (i != 1) {
                            final String name = xmlResourceParser.getName();
                            if (i != 0) {
                                if (i == 2) {
                                    Log.d("DEBUG", "Start Tag Parsing: " + xmlResourceParser.getName());
                                    if (!name.equals("countriesTag") && !name.equals("cntryTag")) {
                                        attributeValue = xmlResourceParser.getAttributeValue(0);
                                        if (name.equals("mcc")) {
                                            break Label_0207;
                                        }
                                        hashMap2.put(name, attributeValue);
                                    }
                                }
                                else if (i == 3 && name.equalsIgnoreCase("cntryTag")) {
                                    hashMap.put(s, new HashMap<String, String>(hashMap2));
                                    hashMap2 = new HashMap<String, String>();
                                }
                            }
                            i = xmlResourceParser.next();
                        }
                        return hashMap;
                    }
                    catch (XmlPullParserException ex) {
                        return hashMap;
                    }
                    finally {
                        xmlResourceParser.close();
                    }
                }
                final String s = attributeValue;
                continue;
            }
        }
    }
При попытке вытащить значение из xml файла и вывести его в textview приложение падает((
Помогите разобраться начинающему.

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Проблема с парсингом xml файла

Сообщение trew » 06 окт 2013, 16:09

Я тоже начинающий программист.
Есть подозрение, что у Вас файл xml неправильный.
Ниже пример, сравните со своим.

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

[code]<?xml version="1.0" encoding="utf-8"?>
<countriesTag> 
    <cntryTag> 
        <mainText> value="sometext1" </mainText>
        <secondString> value="sometext2" </secondString>
        <mcc> value="1" </mcc>
    </cntryTag> 
    <cntryTag> 
        <mainText> value="sometext3" </mainText>
        <secondString> value="sometext4"</secondString>
         
        <mcc> value="2" </mcc> 
    </cntryTag> 
</countriesTag>
[/code]

Парсить файл XML можно разными способами, их как минимум три.
В архиве, прикрепил, способ при помощи SAX парсера.
Инструкция:
Создаете новый проект в eclipse;
файл countries.xml (из архива) поместить в папку assets;
остальные файлы xml поместить в папку res/layout;
файлы java, из архива, это классы. (в eclipse, в проекте нажимаем Ctrl+N выбираем раздел Java, далее Class)
и код скопируйте из файлов (название классов = названиям файлов)

Хотел проект рабочий прикрепить, но что-то 1.2Мб долго заливается на форум. Поэтому прикрепил отдельные файлы.
Вложения
XMLParsing_Example.rar
(3.08 КБ) 185 скачиваний
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Ответить