Documentation/Calc Funktionen/XMLFILTERN
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Spende
Funktionsname:
XMLFILTERN
Kategorie:
Text
Zusammenfassung:
Wendet einen XPath auf einen Text an, der strukturierte XML-Daten enthält und ermöglicht dabei, einfach Daten innerhalb der XML Struktur zu entnehmen.
Extensible Markup Language (XML) ist eine weitverbreitete Auszeichnungs-Sprache, die die Speicherung und Übertragung von Daten unterstützt durch Verwendung einer Sprache, die sowohl Menschen und Computer lesen können. Sie unterstützt eine breite Varianz an Daten im Internet und in vielen anderen Umgebungen.
XML Path Language (XPath) ist eine Abfragesprache, die path Ausdrücke (in einer nicht-XML Schreibweise) verwendet, um Teile eines XML-Dokumentes auszuwählen.
Die Mächtigkeit der Funktion XMLFILTERN wird erhöht, indem eine Matrix-Formel verwendet wird. Diese wird durch Verwendung der Tastenkombination Umschalt + Strg + Enter (statt nur Enter) oder durch Anklicken der Matrix-Checkbox im Funktionsassistenten erzeugt. Dieser Aspekt im Verhalten der Funktion XMLFILTERN ist ähnlich den anderen Funktionen der Matrix-Kategorie in Calc.
Syntax:
XMLFILTERN(XML Dokument; XPath)
Rückgabewerte:
Gibt einen Text (oder mehrere Texte, wenn in einer Matrix-Formel verwendet) zurück, der/die die entnommenen gewünschten Daten enthält/enthalten.
Argumente:
XML Dokument ist ein Text (in Anführungszeichen) oder eine Referfenz auf eine Zelle, die den Text enthält, der die XML-Auszeichnung enthält. Der Term XML Dokument wird benutzt, weil er im Calc Funktionsassistenten erscheint und nicht, weil es sich um eine eigenständige XML-Datei handelt - das ganze XML Dokument ist in dem Text oder der Zelle enthalten.
XPath ist ein Text (in Anführungszeichen) oder eine Referfenz auf eine Zelle, die den Text enthält, die den zu verwendenden XPath enthält.
- Falls entweder das XML Dokument oder der XPath ein leerer Text ist, dann meldet XMLFILTERN einen #WERT! Fehler.
- Falls das XML Dokument kein gültiges XML enthält, dann meldet XMLFILTERN einen #WERT! Fehler.
- Falls der XPath keine gültige XPath-Sequenz enthält, dann meldet XMLFILTERN einen #WERT! Fehler.
- Falls sowohl das XML Dokument als auch der XPath gültig sind, aber kein übereinstimmendes Element gefunden wird, dann meldet XMLFILTERN einen value not available error (#NV).
Zusätzliche Informationen:
Um XMLFILTERN effektiv zu nutzen, kann ein wenig mehr Informationen über XML und XPath nützlich sein. Die Funktion kann auch ohne tiefe Kenntnisse dieser Technologien genutzt werden, aber eine Erweiterung der Kenntnisse in diesen Bereichen kann helfen, das Beste aus XMLFILTERN zu holen.
Wir empfehlen mit folgenden Links zu starten:
- Wikipedia unter Extensible Markup Language.
- Die Seiten von World Wide Web Consortium's (W3C) XML.
- Wikipedia unter XPath.
- Die Seiten von World Wide Web Consortium's (W3C) XPath.
Ausserdem gibt es noch einige andere Seiten für freie und nützliche Tutorials sowohl für XML als auch für XPath.
Beispiele:
Beispiel zur Basisoperation
Die folgende XML Auszeichnung enthält die fiktiven Namen und eMail-Adressen von drei Mitgliedern eines fiktiven Vereins:
- <members>
- <member>
- <name>John Doe</name>
- <email>sbriacc2@nasigoreng.buzz</email>
- </member>
- <member>
- <name>Jane Doe</name>
- <email>7jobelso.57c@bacharg.com</email>
- </member>
- <member>
- <name>Ann Other</name>
- <email>2kingmuslehh@elhida.com</email>
- </member>
- <member>
- </members>
Die obige XML ist leicht lesbar angeordnet. Dieser Code wird komplett in Zelle A1 einer leeren Calc Tabelle kopiert. Dieser Vorgang verliert zwar einige Formatierungen und hinterlässt einige Leerzeichen zwischen den XML Marken. Das sollte aber keine Auswirkung auf das Verhalten von XMLFILTERN geben.
Die Formel =XMLFILTERN($A$1; "/members/member/name")
wird in eine leere Zelle der selben Tabelle eingegeben. XMLFILTERN gibt den Text "John Doe", den Namen des ersten Mitgliedes in der Mitgliedsliste, zurück. Der führende "/" in diesem XPath Text zeigt einen absoluten Pfad an, der von der Wurzel des XML Dokumentes startet.
Die Formel =XMLFILTERN($A$1; "//member[2]/name")
wird in eine andere leere Zelle der selben Tabelle eingegeben. XMLFILTERN gibt "Jane Doe", den Namen des zweiten Mitglieds in der Mitgliederliste, zurück. Die führenden "//" dieses XPath Textes geben eine relativen Pfad an, so dass der erwartete Knoten irgendwo im XML Dokument liegen kann.
Der Teil-Text "[2]" im XPath Text im vorigen Beispiel ist ein Beispiel für eine "Eigenschaft". XPath erlaubt die Verwendung von Eigenschaften, um einen spezifischen Knoten oder einen Knoten mit spezifischen Werten zu finden. Im Folgenden sind weitere Beispiele mit den Ergebnissen.
Die Formel =XMLFILTERN($A$1; "/members/member[last()-1]/email")
wird in eine leere Zelle in der selben Tabelle eingegeben. XMLFILTERN gibt den Text "7jobelso.57c@bacharg.com", die eMail-Adresse des zweiten Mitglieds in der Mitgliederliste, zurück. Der Teiltext "[last()-1]" ist eine Eigenschaft, die das vorletzte Mitglieder Element, das ein Kind-Element der Mitgliederliste ist, auswählt.
Schliesslich wird die Formel =XMLFILTERN($A$1; "//member[position()>2]")
in eine leere Zelle derselben Tabelle eingegeben. XMLFILTERN gibt den Text "Ann Other2kingmuslehh@elhida.com" zurück, alle verfügbaren Informationen (Name und eMail-Adresse) des dritten Mitgliedes in der Liste. Der Text "[position()>2]" ist eine Eigenschaft, die nicht zum ersten und zweiten Mitglieder-Element führt, aber mit dem dritten und allen weiteren Mitglieder-Elementen übereinstimmt.
Matrix Beispiel
Zelle A1 enthält die swelbe XML Auszeichnung wie im Unterabschnitt #Beispiel zur Basisoperation weiter oben.
Esw werden drei zusammenhängende Zellen in derselben Spalte ausgewählt. Zur besseren Indentifikation in diesem Beispiel nehmen wir die Zellen A3, A4 und A5.
In der Eingabezeile wird die Formel =XMLFILTERN($A$1, "//name")
eingegeben, aber anstatt einfach mit Enter zu bestätigen, wird mit Umschalt + Strg + Enter bestätigt. Das macht die Formel zur Matrix-Formel und XMLFILTERN übernimmt den Namen des ersten Mitglieds in die Zelle A4, den Namen des zweiten Mitgliedes in die Zelle A5 und den Namen des dritten Mitgliedes in die Zelle A5.
Da dieser XML-Text Informationen über nur drei Mitglieder enthält und irrtümlicherweise vier Zellen (A3:A6) ausgewählt wurden, erscheint in der Zelle A6 ein not available error (#NV).
Verwendung von XML Daten aus dem Internet über die Funktion WEBDIENST
Die Wiki der Document Foundation bietet einen Bereich für press releases of LibreOffice information. Dieser Blog bietet Zugang zu einem RSS (Really Simple Syndication) Kanal, der demonstriert, das die Verwendung von XMLFILTERN nur eine flache Textstruktur ist, die XML nutzt. Calc's Funktion WEBDIENST kann als Zugang zu diesem Kanal genutzt werden und die Kombination der beiden Funktionen wird die Datenabfrage sehr mächtig.
Zum Entstehungszeitpunkt dieses Beispiels gibt die Formel =XMLFILTERN(WEBDIENST("https://blog.documentfoundation.org/blog/category/press-releases/feed/"); "//channel/title")
den Text "Press Releases – The Document Foundation Blog" zurück (auch wenn sich der Inhalt des Textes in Zukunft ändern kann).
Der URL "https://blog.documentfoundation.org/blog/category/press-releases/feed/" wird in einer leeren Zelle gespeichert, z. Bsp. Zelle D1. Dann wird die Formel =XMLFILTERN(WEBDIENST($D$1); "//channel/item[1]/pubDate")
in eine andere leere Zelle eingegeben. Diese gibt einen Text mit dem Veröffentlichungsdatum der neuesten Veröffentlichung (z. Bsp. "Thu, 13 May 2021 12:00:27 +0000") zurück.
Auf ähnlichem Wege ist es auch möglich, die Information zur letzten Änderung in der Wiki der The Document Foundation zu erhalten. z. Bsp. gibt die Formel =XMLFILTERN(WEBDIENST("https://wiki.documentfoundation.org/api.php?hidebots=1&days=7&limit=50&action=feedrecentchanges&feedformat=rss"); "//lastBuildDate")
den Text zum letzten Erstellungsdatum der Wiki (z. Bsp. "Sat, 05 Jun 2021 10:01:26 GMT") zurück.
Die Funktion WEBDIENST gibt den Fehler #WERT! zurück, wenn sie keine Daten aus der angegebenen URL holen kann. Mit der Funktion ISTFEHLER kann die Antwort von WEBDIENST überprüft werden, bevor sie an XMLFILTERN übergeben wird.
Ähnliche LibreOffice Funktionen:
ODF Standard:
Nichts.
Betroffene (oder ähnliche) EXCEL-Funktionen:
FILTERXML seit Version 2013.