Вот статья на 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, который находится не в файле ресурсов, вы можете создать новый XmlPullParser
, используя XmlPullParserFactory
класс , а затем вызвать метод setInput()
.