W poprzedniej notce ogólnie omówiłem parsowanie dokumentów xml w javie przy użyciu klasy Digester. Teraz troszkę rozbudujmy nasz dokument xml o dane kontaktowe
<Osoba>
<DaneOsobowe>
<Imie>Jan</Imie>
<Nazwisko>Iksisnki</Nazwisko>
</DaneOsobowe>
<Adres>
<AdresZamieszkania>
<Ulica>Nowa</Ulica>
<Nr>4</Nr>
<Miejscowosc>Kraków</Miejscowosc>
</AdresZamieszkania>
</Adres>
</Osoba>
Do naszej klasy w której były pola Person w której były pola name i surname dodajemy pola street, number i localization z oraz settery i gettery dla tych pól. I teraz wywołujemy metodę parsującą bardzo podobną jak ostanio.
Digester dig = new Digester();
dig.setValidating(false)
//tutaj uwaga bo brak linijki dig.addObjectCreate("*/DaneOsobowe", Person.class);
dig.addBeanPropertySetter("*/DaneOsobowe/Imie", "name");
dig.addBeanPropertySetter("*/DaneOsobowe/Nazwisko", "surname");
dig.addBeanPropertySetter("*/AdresZamieszkania/Ulica", "street");
dig.addBeanPropertySetter("*/AdresZamieszkania/Nr", "number");
dig.addBeanPropertySetter("*/AdresZamieszkania/Miejscowosc", "localization");
//tutaj kolejna różnica
dig.push(new Person());
Person person = (Person) dig.parse(new StringReader(documentContent));
Czym się rożni ten kawałek kodu od poprzedniego. Usunięta linijka dig.addObjectCreate(”*/DaneOsobowe”, Person.class); Mamy 2 wzorce, jeden */DaneOsobowe a drugi */AdresZamieszkania. Najprawdopodobniej można dodać kolejną linijkę addObjectCreate, nie sprawdzane przeze mnie. Ale rozwiązaniem na to jest dodanie na stos nowej instancji naszej klasy Person, które wykonuje się w linijce dig.push(new Person()). Tylko jeśli w dokumencie będzie więcej atrybutów o takich samych nazwach ale leżących w innych gałęziach, trzeba pamiętać o dobrym ustawieniu wzorców w addBeanPropertySetter.
7 listopad 2007 o 20:03
[...] Druga część Pierwsza część Posted in Uncategorized. [...]
18 czerwiec 2009 o 0:18
[...] Druga część 3 część wiele atrybutów Napisane w java. Tagi: apache, Digester, java, parsowanie, przetwarzania, xml. Komentarzy: 2 » [...]