Вот статья на сайте 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()
.
Это текстовый файл, который включает описание библиотеки.
Он позволяет libtool
создавать независимые от платформы имена.
Например, ] libfoo
идет по адресу:
Под Linux:
/lib/libfoo.so # Symlink to shared object
/lib/libfoo.so.1 # Symlink to shared object
/lib/libfoo.so.1.0.1 # Shared object
/lib/libfoo.a # Static library
/lib/libfoo.la # 'libtool' library
Под Cygwin :
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # libtool library
/bin/cygfoo_1.dll # DLL
Под Windows MinGW:
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # 'libtool' library
/bin/foo_1.dll # DLL
Итак, libfoo.la
- единственный файл который сохраняется между платформами с помощью libtool
, позволяя понять, что происходит с:
вне зависимости от реализации библиотек на конкретной платформе .