Moja aplikacja będzie parsować XML otrzymany przez HTTP. O ile rozumiem, istnieją trzy główne sposoby analizowania XML:
- SAX
- Dom.
- XmlPullParser
Mówi się, że SAX jest najszybszym z nich, podczas gdy DOM nie jest optymalny dla większych dokumentów XML. Ale czym jest duży dokument XML pod względem parsowania? Jaki byłby zalecany parser dla poniższych?
- Rozmiar dokumentu XML od 1-5 kB
- Łatwe przechodzenie przez dokument, tj. muszę znać nie tylko bieżący element, ale także elementy nadrzędne.
2 odpowiedzi
O ile rozumiem, istnieją trzy główne sposoby parsowania XML:
- SAX
- DOM
- XmlPullParser
Zło! Żaden z tych sposobów nie jest najlepszy. To, czego naprawdę potrzebujesz, to parsowanie oparte na adnotacjach przy użyciu Simple XML Framework. Aby zobaczyć, dlaczego postępuj zgodnie z tą logiką:
- Java działa z obiektami.
- XML może być reprezentowany za pomocą obiektów Java. (patrz JAXB)
- Adnotacje mogą służyć do mapowania tego kodu XML na obiekty Java i na odwrót.
- Simple XML Framework wykorzystuje adnotacje, aby umożliwić wspólne mapowanie języka Java i XML.
- Simple XML może działać na Androidzie (w przeciwieństwie do JAXB).
- Powinieneś używać Simple XML dla wszystkich potrzeb XML w Androidzie.
Aby pomóc Ci to zrobić, wskażę Ci mój własny post na blogu, który dokładnie wyjaśnia, jak korzystać z prostej biblioteki na Androidzie.
Jeśli nie masz pliku XML o wielkości 100 MB, Simple będzie dla Ciebie wystarczająco szybki. Jest dla mnie, używam go we wszystkich moich projektach XML Androida.
Uwaga Powinienem zwrócić uwagę, że jeśli wymagasz od użytkownika pobrania plików XML, które mają więcej niż 1 MB na Androida, możesz przemyśleć swoją strategię. Możesz robić to źle.
Obawiam się, że to przypadek, to zależy...
Z reguły użycie Javy do zbudowania drzewa DOM z dokumentu XML będzie zużywać od 4 do 10 razy większy niż natywny rozmiar dokumentu (przy założeniu, że tekst zachodni i kodowanie UTF-8), w zależności od podstawowej implementacji. Jeśli więc szybkość i wykorzystanie pamięci nie są krytyczne, nie będzie to problemem dla wspomnianych małych dokumentów.
DOM jest powszechnie uważany za dość nieprzyjemny sposób pracy z XML-em. Aby zapoznać się z tłem, możesz spojrzeć na prezentację Elliotte Rusty Harold: Co jest nie tak z interfejsami API XML (i jak je naprawić).
Jednak korzystanie z SAX może być jeszcze bardziej żmudne, ponieważ dokument jest przetwarzany pojedynczo. SAX jest jednak szybki i zużywa bardzo mało pamięci. Jeśli możesz znaleźć parser pull, który ci się podoba, spróbuj tego.
Innym podejściem (nie super wydajnym, ale czystym i łatwym w utrzymaniu) jest zbudowanie drzewa XML w pamięci (przy użyciu, powiedzmy, DOM), a następnie użycie wyrażeń XPath do wybrania interesujących Cię informacji.
Podobne pytania
Powiązane pytania
Nowe pytania
android
Android to mobilny system operacyjny Google, używany do programowania lub tworzenia urządzeń cyfrowych (smartfony, tablety, samochody, telewizory, Wear, Glass, IoT). W przypadku tematów związanych z Androidem użyj tagów specyficznych dla Androida, takich jak android-intent, android-activity, android-adapter itp. W przypadku pytań innych niż programowanie lub programowanie, ale związanych ze strukturą Androida, użyj tego linku: https: // android.stackexchange.com.