2016-04-19 35 views
6

Przeglądam strony. Zauważyłem, że XMLStreamReader jest Interfejs API stylu kursora do analizy XML. I XMLEventReader jest Interfejs API w stylu Iteratora dla Parsing XML. Czy ktoś mógłby mi powiedzieć szczegółowo?Jaka jest różnica między XMLStreamReader i XMLEventReader?

+1

Zobacz początek strony https://docs.oracle.com/javase/tutorial/jaxp/stax/api.html. –

Odpowiedz

4

Wystarczy popatrzeć na wyjaśnienie: https://www.ibm.com/developerworks/library/x-stax1/

Zarówno XMLStreamReader i XMLEventReader zezwolić aplikacji iteracyjne nad bazowego strumieniu XML na własną rękę. Różnica między tymi dwoma podejściami polega na tym, że eksponują one kawałki przeanalizowanego XML InfoSet. XMLStreamReader działa jako kursor, który wskazuje poza ostatnio przeanalizowany token XML i udostępnia metody uzyskiwania dalszych informacji na jego temat. To podejście jest bardzo wydajne pod względem pamięci, ponieważ nie tworzy żadnych nowych obiektów. Twórcy aplikacji biznesowych mogą jednak uznać program XMLEventReader za nieco bardziej intuicyjny, ponieważ jest to właściwie standardowy iterator języka Java, który przekształca XML w strumień obiektów zdarzeń. Każdy obiekt zdarzenia z kolei zawiera informacje dotyczące konkretnej struktury XML, którą reprezentuje. Część 2 tej serii zawiera szczegółowy opis interfejsu API opartego na iteratorze. Od jakiego stylu interfejsu API zależy sytuacja. Interfejs API oparty na iteratorze zdarzeń reprezentuje bardziej obiektowe podejście niż interfejs API oparty na kursorach. W związku z tym łatwiej jest stosować w architekturach modułowych, ponieważ bieżący stan analizatora jest odzwierciedlany w obiekcie zdarzenia; w ten sposób komponent aplikacji nie potrzebuje dostępu do parsera/czytnika podczas przetwarzania zdarzenia. Co więcej, możliwe jest utworzenie XMLEventReader z XMLStreamReader przy użyciu metody createXMLEventReader XMLInputFactory (XMLStreamReader).