Parsowanie XML część 2

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.

Trzecia część- wiele atrybutów

Napisane w java. Tagi: , , , , , .

Jedna odpowiedź do “Parsowanie XML część 2”

  1. Parsowanie XML 3-wiele atrybutów o takiej samej nazwie « nyfi’s considerations mówi:

    [...] Druga część Pierwsza część Posted in Uncategorized. [...]

Napisz odpowiedź