Gdzie mogę znaleźć szczegółowe porównanie frameworków Java XML?

Próbuję wybrać framework do przetwarzania XML dla moich projektów Java i gubię się w nazwach.. XOM, JDOM itp. Gdzie mogę znaleźć szczegółowe porównanie wszystkich popularnych frameworków Java XML?

Author: Aravind R. Yarram, 2010-10-04

2 answers

Jak zauważył Blaise, trzymaj się standardów. Ale istnieje wiele standardów stworzonych w tym okresie, aby rozwiązać różne problemy/przypadki użycia. Który z nich wybrać całkowicie zależy od twoich wymagań. Mam nadzieję, że poniższe porównanie pomoże Ci wybrać odpowiedni.

Teraz są dwie rzeczy musisz wybrać. API i implementacje API (jest ich wiele)

API

SAX: Pros

  • Zdarzenie na podstawie
  • wydajna pamięć
  • faster than DOM
  • obsługuje walidację schematu

SAX: Cons

  • brak modelu obiektowego, musisz wejść w wydarzenia i stwórz siebie
  • pojedynczy parse xml i może tylko idź do przodu
  • tylko do odczytu api
  • brak obsługi xpath
  • trochę trudniejsze w użyciu

DOM: plusy

  • in-memory object model
  • zachowuje element zamówienie
  • dwukierunkowe
  • odczyt i zapis api
  • manipulacja xml
  • prosty w użyciu
  • obsługuje walidację schematu

DOM: Cons

  • pamięć dla większych dokumentów XML (zwykle używane w dokumentach XML mniej niż 10 mb)
  • wolniej
  • model generyczny, czyli pracujesz z węzłami

Stax: Plusy

  • Best of SAX and DOM czyli łatwość DOM i skuteczność SAX
  • wydajna pamięć
  • Model Pull
  • odczyt i zapis api
  • obsługuje podczęści
  • może odczytywać wiele dokumentów w tym samym czasie w jednym wątku
  • równoległe przetwarzanie XML jest łatwiejsze

Stax: Cons

  • brak wsparcia walidacji schematu (o ile z tego co pamiętam, Nie wiem czy mają Dodano Teraz)
  • can only go forward like sax
  • brak manipulacji xml

JAXB: Plusy

  • pozwala na dostęp i przetwarzanie XML dane bez konieczności znajomości XML
  • dwukierunkowe
  • wydajniejsza pamięć niż DOM
  • SAX i DOM są parserami generycznymi, gdzie jak JAXB tworzy parser specyficzny dla Twój XML Schmea
  • konwersja danych: JAXB może konwertować xml do typów Javy
  • obsługuje manipulację XML poprzez obiekt API

JAXB: Cons

  • can only parse valid XML

Trax: do przekształcania XML z 1 formularza do innej formy za pomocą XSLT

Implementacje

SAX, DOM, Stax, JAXB to tylko specyfikacje. Istnieje wiele open source i komercyjnych implementacji tych specyfikacji . Przez większość czasu możesz po prostu trzymać się tego, co pochodzi z JDK lub serwera aplikacji. Ale czasami trzeba użyć innej implementacji, która jest domyślnie dostarczana. I Tu możesz docenić JAXP wrapper api . JAXP pozwala na przełączanie implementacji poprzez konfigurację bez konieczności modyfikowania kodu. Zapewnia również niezależne od parsera/specyfikacji api do analizowania, transformacji, walidacji i zapytań dokumentów XML.

Wydajność i inne porównania różnych implementacji


Teraz standardy są dobre, ale raz na jakiś czas napotykasz ten szalony usecase, gdzie musisz obsługiwać parsowanie dokumentu XML, który jest 100 gigabajtów o rozmiarze lub potrzebujesz ultra szybkiego przetwarzania XML (może być twój są implementacji XML Parser chip) i to jest, gdy trzeba zrzucić standardy i szukać innego sposobu robienia rzeczy. Chodzi o użycie odpowiedniego narzędzia do właściwej pracy! I tu proponuję rzucić okiem navtd-xml

W początkowych dniach SAX i DOM, ludzie chcieli prostszego API niż przez którekolwiek z nich. JDOM, dom4j, XmlBeans, JiBX, Castor są tymi, których wiem, że stał się popularny.

 59
Author: Aravind R. Yarram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:39

@Pangea

JAXB vs DOM i SAX

JAXB nie jest bezpośrednio porównywalny do DOM i SAX. Java DOM i SAX analizowanie interfejsów API to interfejsy API niższego poziomu służące do analizowania dokumentów XML, podczas gdy JAXB (Java API for XML Binding) jest API wyższego poziomu do konwersji XML elementy i atrybuty hierarchii obiektów Java (i odwrotnie). Implementacje JAXB będą najprawdopodobniej używać parsera DOM lub SAX za kulisami, aby wykonać rzeczywiste parsowanie wejścia XML data.

 2
Author: 小色狼,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:09