Способ проанализировать XML (org.w3c. Документ) на Android

Может любой указывать на меня на объяснение или объяснять мне, как я могу легко проанализировать XML и получить значения w3c. Документ о Android с помощью только Android ОС Освобождает?

Я пытался использовать реализацию dom4j, но это - очень медленный:-(

10
задан Thys 18 December 2009 в 10:22
поделиться

2 ответа

Вы должны обязательно использовать предоставленные API SAX. API синтаксического анализа Android XML складывается поверх обычного Java SAX, поэтому, на мой взгляд, я бы просто использовал обычный Java SAX API, и таким образом вы получили возможность тестировать свой код как обычный проект рабочего стола Java.

Анализ XML всегда выполняется медленно, и использование этих парсеров SAX настолько хорошо, насколько это возможно (если вы не напишете собственный парсер с нуля). Совет: постарайтесь свести к минимуму сравнение строк и попробуйте использовать хэш-карты вместо длинных цепочек if (token.isEqual (CONSTANT_TOKEN));.

Вот несколько примеров синтаксического анализа Java XML: http: // java.sun.com/developer/codesamples/xml.html#sax

API XML для Android является декларативным, парадигма немного отличается, поэтому, если вы решите пойти с этим, будьте готовы прочитать несколько примеров, чтобы узнать, как .

Наконец, примерно 2 месяца назад я увидел диаграмму, сравнивающую DOM, SAX и Android XML API (сейчас я не могу найти ссылку). Был сделан вывод, что DOM был намного медленнее, а SAX был лучшим, но не с большим отрывом от реализации XML в Android.

11
ответ дан 3 December 2019 в 15:52
поделиться

Вот статья на Developer.com , в которой сравнивается производительность парсеров DOM, SAX и Pull на Android. Он обнаружил, что синтаксический анализатор DOM является самым медленным, тогда как синтаксический анализатор Pull и синтаксический анализатор SAX являются самыми быстрыми в своем тесте.

Если вы собираетесь много анализировать в своем приложении, возможно, стоит протестировать различные варианты, чтобы выбрать наиболее подходящий для вас.

Я использовал XmlPullParser через XmlResourceParser и обнаружил, что он хорошо работает и прост в использовании.

Он работает через возвращаемые события XML, сообщающие вам, что он там нашел.

Если вы его используете, ваш код будет выглядеть примерно так:

XmlResourceParser parser = context.getResources().getXml(R.xml.myfile);

try {
    int eventType = parser.getEventType();

    while (eventType != XmlPullParser.END_DOCUMENT) {
        String name = null;

        switch (eventType){
            case XmlPullParser.START_TAG:
                name = parser.getName().toLowerCase();

                if (name.equals(SOME_TAG)) {
                    for (int i = 0;i < parser.getAttributeCount();i++) {
                        String attribute = parser.getAttributeName(i).toLowerCase();

                        if (attribute.equals("myattribute")) {
                            String value = parser.getAttributeValue(i);
                        }

                    }
                }

                break;
            case XmlPullParser.END_TAG:
                name = parser.getName();
                break;
        }

        eventType = parser.next();
    }
}
catch (XmlPullParserException e) {
    throw new RuntimeException("Cannot parse XML");
}
catch (IOException e) {
    throw new RuntimeException("Cannot parse XML");
}
finally {
    parser.close();
}

Если вы хотите проанализировать XML, который '

15
ответ дан 3 December 2019 в 15:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: