FilterXML

Opis formuły:
Formuła służy do pobierania danych z tekstu XML za pomocą wyrażenia xPath. Można dzięki niej odczytać wartości elementów znajdujących się w strukturze XML. Formuła zwraca tablicę wszystkich znalezionych wartości.
Składnia:
FILTERXML(XML, xPath, ignoreNamespaces)
Parametry:
XML(typ: tekst)
Tekst zawierający XML, z którego ma zostać odczytana wartość.
 
xPath(typ:tekst)
Wyrażenie xPath wskazujące które elementy lub wartości mają zostać zwrócone.
 
IgnoreNamespaces(type: wartość logiczna)(opcjonalny parametr)
Określa, czy oznaczenia namespace mają być ignorowane. Wartość true - pomija namespace i pozwala używać prostszych ścieżek xPath. Wartość false - wymaga użycia pełnych nazw elementów zgodnych z XML. Domyślnie ustawiona jest wartość true.
 

Zwracany typ:
Tablica wartości
Jak działa formuła:
Pierwszy parametr to tekst XML.
Drugi parametr to wyrażenie xPath, które wskazuje jakie dane mają zostac pobrane.

Znak / służy do przechodzenia do kolejnego elementu w strukturze XML.
Przykład: /root/item oznacza element item, który znajduje się wewnątrz root.

Znak // wyszukuje element w całym XML, niezależnie od jego położenia.
Przykład: //item znajdzie wszystkie elementy item.

Znak @ służy do pobierania wartości atrybutu elementu.
Przykład: //user/@id zwróci wartość atrybutu id.

Można również filtrować wyniki.
Przykład: //item[price="20"] znajdzie tylko te elementy item, które mają price równe 20.

Trzeci parametr określa, czy oznaczenia namespace mają być ignorowane. Namespace w XML to dodatkowe oznaczenie przed nazwą elementu, np. <a:Item /> albo <ns:Item />. Jest ono używane, gdy XML pochodzi z różnych systemów lub zawiera elementy o takich samych nazwach. Parametr ignoreNamespaces pozwala zdecydować, czy brać pod uwagę te oznaczenia.
Przykłady:

=join(', ',filterxml('<root><item>A</item><item>B</item></root>','//item',TRUE))
Formuła zwróci: A, B

=first(filterxml('<root> <user id="55">Adam</user> </root>','//user/@id',TRUE))
Formuła zwróci: 55

=CONCAT(filterxml('<root xmlns:a="x"> <a:Item> <a:Value>100</a:Value> </a:Item> </root>','//a:Item/a:Value',FALSE))
Formuła zwróci: 100

=CONCAT(filterxml('<root> <item><price>10</price><name>A</name></item> <item><price>20</price><name>B</name></item> </root>','//item[price="20"]/name',TRUE))
Formuła zwróci: B

=CONCAT(FILTERXML(A2,B2,C2))

Czy ten artykuł był pomocny?
Liczba użytkowników, którzy uważają ten artykuł za przydatny: 0 z 0
Masz więcej pytań? Wyślij zgłoszenie

0 Komentarze

Zaloguj się, aby dodać komentarz.
Oparte na technologii Zendesk