Wierzchołek góry lodowej czyli Java i XML

O tym, że XML w świecie internetu odgrywa rolę fundamentalną nie muszę chyba nikogo przekonywać. O tym, że podobna sytuacja ma miejsce w przypadku Javy wiedziałem już wcześniej, choć dopiero lektura opisywanej ostatnio książki pokazała, że XML jest de facto standardem przyjętym w świecie Javy jeśli chodzi o konfigurację oraz przesyłanie danych. W kolejnej wersji ChlebikClient konfiguracja będzie w związku z tym oparta na plikach XML. Są one o tyle fajne, że ich edycja jest banalna, zaś jeśli chodzi o obsługę programową to mnogość narzędzi jest przytłaczająca.

W swojej aplikacji postanowiłem użyć powszechnie znanej biblioteki Dom4j. Umożliwia ona operowanie na plikach XML oferując API, które jest cokolwiek bardziej użyteczne niż te oferowane przez SAX, który jest niskopoziomowym API dla XMLa w Javie opartym na sterowaniu zdarzeniami. Odczyt pliku XMLa w przypadku dom4j jest banalny.

Podstawowym obiektem, na którym przyjdzie nam operować to org.dom4j.Element – jest to interfejs, który implementuje sporo klas z tego pakietu.

Załóżmy, że mamy plik XML z 2 elementami, w ktorych do tego mamy 2 potomków. Czyli np. element “wyszukiwarki” z dwoma potomkami (onet i google), a do tego też element “portale” z znów dwoma potomkami (interia i gazeta). Odczytanie tego pliku i zapisanie węzłów do LinkedHashSet można zrealizować tak (obiekt document jest instancją klasy org.dom4j.document, która reprezentuje cały wczytany plik XML):

org.dom4j.Element root = document.getRootElement();
LinkedHashSet listaWartosci = new LinkedHashSet();

for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
DefaultElement element = (DefaultElement) i.next();
listaWartosci.add(element);
}

Proste? A pewnie, że proste. Choć to oczywiście wierzchołek góry lodowej jak mówi tytuł wpisu – o XMLu i Javie z pewnością jeszcze napiszę.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s