XML - ćwiczenia 6 - DOM
DOM - Document Object Model
DOM jest to:
-
model dokumentu XML (a także HTML); dokument jest drzewem zbudowanym z węzłów: dokumentu (korzeń), elementów, tekstu, instrukcji przetwarzania, komentarzy, sekcji CDATA, encji, DTD, notacji;
-
interfejs programistyczny; DOM definiuje klasy węzłów i metody, za pomocą których można wędrować po strukturze drzewa, odczytywać zawartość węzłów, modyfikować strukturę i zawartość.
Charakterystyczne dla DOM są następujące rzeczy:
-
parser DOM tworzy w pamięci komputera całe drzewo dokumentu,
-
typy i intrfejsy używane w DOM są określone statycznie, te same klasy i metody są używane dla wszystkich dokumentów XML,
-
jest dość duży narzut pamięciowy na strukturę DOM w stosunku do rozmiaru samego dokumentu i dość duży narzut na ilość kodu programu w stosunku do jego wartości użytkowej (to koszt statycznego intefejsu).
Referencje
Specyfikacje:
DOM Level 1
DOM Level 2 - Core
DOM Level 2 - Events
DOM Level 2 - Style
DOM Level 2 - Traversal and Range
DOM Level 2 - Views
API:
Java API - org.w3c.dom
Java API - javax.xml.parsers
Java API - Xerces
Xerces
Przykład
Program SimpleDOM.java parsuje podany dokument i wypisuje na wyjście jego węzły tekstowe. W tym programie używana jest tylko generyczna klasa Node i za pomocą metody getNodeType sprawdzany jest typ węzła. Można też programować bardziej obiektowo tworząc metody wirtualne podmieniane w podklasach.
Zadania
-
Napisz program (skorzystaj z przykładu) parsujący dokument do postaci DOM i wypisujący na wyjście ten dokument w postaci sformatowanej (większe wcięcia na kolejnych poziomach zagnieżdżenia elementów). Wystarczy wypisywać elementy z atrybutami i zawartość tekstową.
-
Napisz program (skorzystaj z poprzedniego) który:
-
parsuje dokument do postaci DOM,
-
dodaje do każdego elementu atrybut "liczba_potomkow", w którym zapisana jest liczba wszystkich węzłów będących potomkami danego elementu,
-
wypisuje na wyjście zmodyfikowany dokument (wystarczy wypisywać elementy z atrybutami i zawartość tekstową).