XPath czy streamy/flatMapy

0

Cześć.
Przychodzę do was z taką rozminą, mianowicie: siedzę teraz w projekcie w którym integruje się z systemem zewnętrznym. Dane między nami a nimi są przekazywane w formacie xml. Plik podglądowy poniżej:

<myobject>
    <position>
        <field>Radek</field>
        <field>Marek</field>
        <field>Janusz</field>
    </position>
    <position>
        <field>Joanna</field>
        <field>Marta</field>
    </position>
</myobject>

W tej chwili wygląda to tak że przychodzi XML i jest on mapowany na klasę MyObject. Wszelkie wyszukiwania danych np. pobranie wszystkich elementów typu field odbywa się za pomocą streamów (flatmap). Zastanawia mnie czy do wyciągania danych nie można by było użyć XPath i dopiero po znalezieniu odpowiednich elementów (wykonaniu xpath expression) mapować na klasy? Co o tym sądzicie? Spotkał się ktoś z taką praktyką że najpierw wyszukiwanie/orka to xml+xpath a dopiero później mapowanie?

Bardzo byłbym wdzięczny za sugestię i komentarze.

0

Streamy (ich definicje) w odróżnieniu od XPath/XQuery chyba słabo się persystują w bazie danych / plikach konfiguracyjnych.
XPath nie jest żadną orką, orką jest raczej StAX - https://www.baeldung.com/java-stax.

0

Pytanie, jak duże są te XML, jak dużo z nich potrzebujesz. Co z nimi robisz itp itd.

0

@UglyMan: No właśnie, są spore tzn. IMHO są sporę bo potrafią ważyć po 5-10mb. Co z nimi robię: kontynuując przykład z pierwszego postu: na bazie wydłubanych danych z XMLa realizuje jakąś logikę na zasadzie: na jaką literę jest najwięcej imion lub bardziej życiowo: wyciągam dane i wrzucam je do obiektu następnego req.

Edit:
Chce tylko zauważyć że podany przykład jest mocno uproszczony, w "prawdziwości" te pola field byłby zagnieżdżone w 3-4 obiektach głębiej.

0

Te XMLy masz w plikach czy bazie danych (jakiej)?

0

@vpiotr: Dostaje je jako odpowiedź body z zapytania http.

1

Ja bym wolał XPath, to takie regular expressions - raz się nauczysz i polubisz.
5-10 MB to nie jest dużo, obrabiałem już XMLe po 500 MB na sprzęcie 2-3 lata temu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1