Подтвердить что ты не робот

Xml pull parser assets xml

Как я могу разобрать локальный XML файл в папке с ресурсами, используя парсер? Я не могу заставить парсер работать. Он всегда выбрасывает исключение io. Я думаю, что не могу получить путь к файлу или подключиться к файлу.

4b9b3361

Ответ 1

mixm,

Я собирался различными способами загружать локальный файл из "активов" и "res", но чтобы ответить на ваш вопрос, как было задано (как ни у кого больше нет):

Во-первых, убедитесь, что ваш XML действителен перед тестированием или отключите проверку, так вы можете это сделать и создать экземпляр парсинга вытягивания одновременно:

    try {
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setValidating(false);
        XmlPullParser myxml = factory.newPullParser();

Затем откройте файл xml и задайте его как вход для вашего парсера pull:

        InputStream raw = getApplicationContext().getAssets().open("simple.xml");
        myxml.setInput(raw, null);

Теперь настройте свою тянущую петлю (или другую, зависит от того, хотите ли вы отложить оттяжку или нет, что ваши дизайнерские решения:

        int eventType = myxml.getEventType();
        while(eventType != XmlPullParser.END_DOCUMENT) {
            if(eventType == XmlPullParser.START_DOCUMENT) {

                Log.d(MY_DEBUG_TAG, "In start document");
            }
            else if(eventType == XmlPullParser.START_TAG) {
                Log.d(MY_DEBUG_TAG, "In start tag = "+myxml.getName());
            }
            else if(eventType == XmlPullParser.END_TAG) {
                Log.d(MY_DEBUG_TAG, "In end tag = "+myxml.getName());

            }
            else if(eventType == XmlPullParser.TEXT) {
                Log.d(MY_DEBUG_TAG, "Have text = "+myxml.getText());
            }
            eventType = myxml.next();
        }
    } catch (XmlPullParserException e) {

Обратите внимание на myxml.getEventType(), вам нужно сделать это, чтобы получить синтаксический анализ и обработать те типы событий, которые вы вытягиваете. Примечание: блоки catch исключены для удобочитаемости.

Протестировано выше 2.1, надеюсь, что это поможет -Frank