Obecnie w pracy robię obsługę pewnego webservicu i o webservicach też zamierzam coś napisać w przyszłości. Częścią tego projektu jest przetworzenie dokumentu xml i wyciągnięcie z niego interesujących nas danych.
Do parsowania korzystam z dobrodziejstwa fundacji apache i jej klasy Digester. Jako przykład, może przetworzę prosty dokument.
<Osoba>
<DaneOsobowe>
<Imie>Jan</Imie>
<Nazwisko>Iksisnki</Nazwisko>
</DaneOsobowe>
</Osoba>
Mamy prosty dokument xml, który podaje nam imię i nazwisko jakiejś osoby i chcemy te dane wyciagnać. Tworzymy prostą klasę w javie z polami name i surname oraz geterami i sereami.
public class Person{ String name; String surname;</code> //setter and getters }
W miejscu gdzie nam są potrzebne te dane wywołujemy następujący kod.
Digester dig = new Digester(); dig.setValidating(false) dig.addObjectCreate("*/DaneOsobowe", Person.class); dig.addBeanPropertySetter("*/DaneOsobowe/Imie", "name"); dig.addBeanPropertySetter("*/DaneOsobowe/Nazwisko", "surname"); Person person = (Person) dig.parse(new StringReader(documentContent));
Pierwsza linijka to utworzenie nowego obiektu Digester i zaraz po niej ustawienie flagi validate, która musi być ustawiona przed metodą parse(). Kolejna linijka jest dosyć ciekawa addObjectCreate. Pierwszy parametr tej metody to wzorzec, w którym będziemy poszukiwać interesujących nas danych a drugi to klasa gdzie będziemy je przechowywać. Gwiazdka zastępuje nam element główny i wydaję mi się, że możliwe jest zastąpienie następnych elementów ale tego nie sprawdzałem. Kolejne linijki ustawiają w naszej klasie Person pola name i surname wartościami jakie są w XML przypisane atrybutom Imie i Nazwisko. W ostatniej linijce dokonuje się parsowanie rzutowanie na naszą klasę. Metoda parse może przyjmować jako argumenty różne argumenty. Ja wykorzystuję StringReader, który czyta wcześniej podaną zawartość pliku XML. Dostęp do tych pól mamy przez settery i gettery.
Należy pamiętać o obudowaniu parsowania wyjątkami ale to eclipse nam podpowiada, kiedy je wstawiać. Więcej informacji i tutorial można znaleźć tutaj.
30 październik 2007 o 20:50
[...] XML część 2 październik 30th, 2007 — nyfi W poprzedniej notce ogólnie omówiłem parsowanie dokumentów xml w javie przy użyciu klasy Digester. Teraz troszkę [...]
7 listopad 2007 o 20:04
[...] część Pierwsza część Posted in java. Tags: apache, Digester, java, parsowanie, przetwarzanie, stos, wiele atrybutów, [...]