2016-06-21 36 views
7

Nie mogę znaleźć żadnych informacji na temat org.w3c.dom.ls.LSParser. Wiem, że to interfejs, ale istnieje tylko jeden sposób na uzyskanie konkretnego obiektu afaik.Java: Jaka jest różnica między LSParser a DocumentBuilder

DOMImplementationLS factory = (DOMImplementationLS) myXMLDocument.getImplementation(); 
LSParser parser = factory.createLSParser(DOMImplementationLS.MODE_ASYNCHRONOUS, null); 

Jak LSParser różni się od javax.xml.parsers.DocumentBuilder (lub SAXParser)

Odpowiedz

2

Najpierw SAXParser różni się od javax.xml.parsers.DocumentBuilder i LSParser, że strumienie to poprzez XML, zamiast budynku Model obiektu dokumentu (DOM).

To pozostawia nam wyjaśnienie javax.xml.parsers.DocumentBuilder i LSParser. Specyfikacja DOM zawiera poziomy określające strukturę i zachowanie DOM. Istnieją trzy poziomy. (1, 2 i 3). LSParser oznacza "Load and Save Parser". Ten analizator składni obsługuje standard DOM Level 3. Implementuje zachowanie zdefiniowane tutaj - https://www.w3.org/TR/DOM-Level-3-LS/load-save.html. Ponieważ LSParser obsługuje standard DOM Level 3, umożliwia obsługę zdarzeń (gdy załadowany jest DOM), zapisywanie i filtrowanie. Zwróć uwagę, że jest to specyfikacja, więc może być zaimplementowana w dowolnym języku.

W przeciwieństwie do javax.xml.parsers.DocumentBuilder to oparty na języku Java interfejs API (JAXP). To projekt, a nie spec.

Specyfikacja LSParser była zależna zarówno od projektów JAXP, jak i SAX. Po prostu ustandaryzował parsowanie XML i używając DOM.

Literatura: https://www.amazon.com/Processing-XML-documents-Oracle-JDeveloper/dp/1847196667 (Patrz rozdział 7 - dotyczący tego tematu).

https://www.w3.org/TR/DOM-Level-3-LS/load-save.html (to pełna specyfikacja).