Может любой указывать на меня на объяснение или объяснять мне, как я могу легко проанализировать XML и получить значения w3c. Документ о Android с помощью только Android ОС Освобождает?
Я пытался использовать реализацию dom4j, но это - очень медленный:-(
Вы должны обязательно использовать предоставленные 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.
Вот статья на 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, который '