2013-03-25 15 views
6

Pracuję nad aplikacją, w której za pierwszym razem będę analizować dane z pliku xml pochodzącego ze zdalnego serwera.Android: Najlepszy analizator składni do analizy danych XML

Ale nie jestem w stanie wybrać, który analizator składni jest wydajny lub najlepiej pasuje do parsowania. Ponieważ istnieje głównie trzy rodzaje parsowania, które wiem:

  1. SAX
  2. XMLPullParsing
  3. DOM

Jaki jest najlepszy parser do analizowania danych? Podczas wyszukiwania w Google i znalazłem pozytywne i negatywne obie strony powyższych parserów. Ale nie byłem w stanie określić, który jest najbardziej wydajny.

Kod XML zawiera duże ilości danych z wieloma tagami.

Proszę, poprowadź mnie i zasugeruj mi który parser powinienem użyć, ponieważ używam parsowania w mojej aplikacji po raz pierwszy.

+0

użyj sax lub xmlpullparsing. – Raghunandan

+1

jeśli rozmiar pliku jest rozsądny, spróbuj dom. jeśli nie pasuje do rdzenia, użyj sax. pokaż nam swój schemat i powiedz nam, jakie rzeczy robisz z danymi. –

+0

Oznacza sax jeśli jest dobry, a dom dla ciężkich danych, ale proszę powiedz mi o xmlpullparser. Najlepsze wśród sax i xmlpull. –

Odpowiedz

9

We wszystkich parserach XML parser jest najszybszy, więc możesz go bez wątpienia ... Jeśli chcesz odczytać i zapisać dane z pliku XML, możesz przejść do DOM. Używając parsera SAX będziesz mógł tylko odczytać dane z XML. Ponieważ te dwa są na górze listy, nie musisz myśleć o XMLPullparser.

+0

Niestety, ale parser SAX ma problem z tagiem zamykającym się automatycznie , czy masz jakieś rozwiązanie, aby to rozwiązać? – vuhung3990

18

Analiza SAX jest najlepsza do implementacji niż DOM. Zobacz różnicę między tymi dwoma w następujących przypadkach:

DOM:

  • węzły są w postaci struktury drzewa.
  • Pamięć: Zajmuje więcej pamięci, DOM jest preferowany tylko w przypadku małych dokumentów XML .
  • Wolniej w czasie wykonywania.
  • Przechowywane jako obiekty.
  • Programowo łatwe do wdrożenia.
  • Łatwość nawigacji i użytkowania.

SAX:

  • Kolejność zdarzeń.
  • Nie korzysta z żadnej wolnej pamięci dla dużych dokumentów.
  • Szybciej w czasie wykonywania, ze względu na wyżej wymieniony punkt.
  • Obiekty należy utworzyć.
  • Należy wpisać kod do tworzenia obiektów.
  • W nawigacji SAX do tyłu nie jest możliwe, ponieważ sekwencyjnie przetwarza dokument.
+2

+1. To doskonałe porównanie. Chciałbym podkreślić, że SAX jest trudniejszy do wdrożenia, ponieważ programista musi przejść przez węzły. Jest jednak szybszy, zużywa mniej pamięci i jest znacznie lepiej dopasowany do dużych zestawów danych XML lub strumieniowych danych XML. –

+0

Dokładnie przyjacielu. :) –

1

Powiedziałabym, że XMLPullParsing, ale ostatnio słyszałem wiele ciekawych rzeczy na temat Xerces może również zajrzeć do tego. Jednak nigdy nieużywane Xerces i XMLPullParser nigdy mnie nie zawiodły. Tworzymy aplikację z kolorowymi roletami, która z niej korzysta i pobiera tysiące kombinacji kolorów, aby powiedzieć, jaki kolor zrobiłeś właśnie zdjęcie.

aktualizacja: heres kilka linków do odczytu, jeśli ci to nie przeszkadza czytanie: p, pokazuje zalety i profity dla obu stron

http://www.firstobject.com/xml-reader-sax-vs-xml-pull-parser.htm

także inna odpowiedź może czytać w SAX parser vs XMLPull parser

Powiązane problemy