Muszę przetworzyć plik XML, który pod pewnym względem jest wadliwy i jego budowa jest następująca (przykład):
<osoby><osoba>
<wiek>18</wiek>
<plec>mezczyzna</wiek>
Jan Kowalski
</osoba></osoby>
Oczywiście struktura XML jest zdecydowanie bardziej skomplikowana, ale ten prosty przykład doskonale pokazuje sedno mojego problemu - mianowicie jak wydobyć imię i nazwisko (Jan Kowalski) z takiej struktury, skoro brakuje tagu w stylu <nazwisko>Jan Kowalski</nazwisko ?
Początkowo do parsowania korzystałem biblioteki XML2Dict, która jest niesamowicie wygodna dla programisty (łatwo i wygodnie jest operować na słowniku), ale po zmapowaniu XML na słownik wartość "Jan Kowalski" była niedwracanie tracona (XML2Dict nie wiedział jak z tym postępować).
W xml.dom.minidom też nie doszukałem się funkcji, która pozwoliłaby taką wartość wyciągnąć.
Jedyne co przyszło mi do głowy, to wydobyć węzeł osoba:
<osoba> <wiek>18</wiek> <plec>mezczyzna</wiek> Jan Kowalski </osoba>
i tutaj już ręcznie sparsować to jak zwykły String. Czyli szukam domknięcia </wiek> i </osoba>, a potem wartość między nimi traktuję jak interesującą mnie wartość.
Ale jest to dość mało efektywne, a eleganckie to już w ogóle.
Zależy mi na efektywności, bo plik XML będzie parsowany co minutę, a jest dość pokaźnych rozmiarów.
Czy ma ktoś pomysł na rozwiązanie tego problemu?