Was ist XML
Die Extensible Markup Language – kurz XML – ist eine Auszeichnungssprache, die auf der Standardzeichenkodierung UTF-8 basiert und dazu dient hierarchisch strukturierte Daten als Textdatei darzustellen. XML-Dateien sind als Knoten in einer Baumstruktur organisiert. Die Knoten können je nach Hierarchiestufen als Elemente, Attribute, Verarbeitungsanweisungen, Kommentare oder Text zusammengesetzt sein. Knoten beginnen immer mit Elementen, die durch öffnende und schliessende Tags gekennzeichnet sind. Inhaltslose Elemente bestehen meistens aus einem einzigen Tag. Ein Vorteil von XML-Textdateien ist, dass diese grundsätzlich sowohl durch Menschen, als auch von Computern gelesen und interpretiert werden können.
Als Metasprache bildet XML, aufgrund struktureller und inhaltlicher Einschränkungen, die Grundlage zur Definition von anwendungsspezifischen Sprachen, wie beispielsweise XHTML. Die Einschränkungen werden über das vorgegebene XML-Schema ausgedrückt. Aufgrund dieser Eigenschaft deckt XML einen breiten Anwendungsbereich ab. So wird XML häufig für den Datenaustausch zwischen plattformunabhängigen Computersystemen eingesetzt. Besonders beim Datenaustausch über das Internet ist XML anzutreffen, da alle herkömmlichen Webbrowser mittels eines eingebauten XML-Parsers in der Lage sind XML-Dateien zu visualisieren.
Diese Ausgangslage macht die Auswertung und Verarbeitung von XML-Dateien durch RPA besonders attraktiv, da viele XML-Einsatzbereiche existieren, wodurch sich viele Anwendungsfälle für RPA identifizieren lassen. Die Herausforderung liegt im korrekten Auslesen der XML-Attribute und -Werte aus den Textdateien. Diese unterscheiden sich in Schema und Struktur von herkömmlich durch RPA verarbeitete Dokumententypen, wie Excel, Mail, Word, etc. Mit dem Beseitigen dieser Hürde kann ein enormes Potenzial ausgeschöpft werden.
Einlesen und verarbeiten von XML-Dateien durch RPA Software
Eine XML-Textdatei wird grundsätzlich identisch zu einem gewöhnlichen Textfile eingelesen. In der von Routinuum GmbH verwendeten Automatisierungssoftware UiPath Studio wird zum Lesen der Textdatei die Aktivität „Read Text File“ verwendet, die standardmässig in den UiPath Studio Aktivitäten vorzufinden ist. Die XML-Textdatei wird vollständig eingelesen und in eine String-Variabel abgelegt. Mit der String-Variabel kann zwar die gesamte XML-Datei als Text wiedergeben werden, jedoch können keine einzelne Werte abgefragt werden. Um diese Problematik zu bewältigen, muss das UiPath Aktivitäten-Paket „UiPath.WebAPI.Activities“ auf dem UiPath Studio installiert werden.
Das Aktivitäten-Paket „UiPath.WebAPI.Activities“ beinhaltet unterschiedliche Aktivitäten zur Verarbeitung von XML- und JSON-Dateien sowie Abfragen über API-Schnittstellen. Für die Umwandlung der XML-Datei von einer String-Variablen in eine XDocument-Variabel, die eine lesbare XML-Struktur aufweist, dient die Aktivität „Deserialize XML“.
Als Input wir das XML als String-Variabel, die als Output aus der „Read Text File“ Aktivität generiert wurde, eingereicht. Die „Deserialize XML“ Aktivität wandelt den eingegebenen String in den Typ XDocument um und schreibt dies als Output in eine XDocument-Variabel (siehe Abbildung Properties der Aktivität „Deserialize XML“).
In der XDocument-Variabel ist die XML-Datei nun in einer Struktur aufgeführt, in der spezifische Elemente, Attribute und Werte abgefragt werden können.
Methoden zur Abfrage von XML-Werten
Aus der XDocument-Variabel können alle in der XML-Textdatei enthaltenen Werte abgefragt und wiedergegeben werden. Um die einzelnen Werte abfragen zu können muss jedoch die Baumstruktur der XML-Datei verstanden werden und die entsprechenden Abfragemethoden müssen bekannt sein.
Die folgenden Methoden dienen zur Abfrage des auszugebenden Wertes:
Element(„XName“) | Wiedergibt das erste Child Element, das als „XName“ definiert ist. |
Elements(„XName“) | Wiedergibt eine Collection der Child Elements des Elements oder Dokuments, indem die Methode abgerufen wird. Nur diejenigen Child Elements werden aufgeführt, die mit „XName“ übereinstimmen. |
Descendents(„XName“) | Wiedergibt eine Collection der Descendents des Elements oder Dokuments, indem die Methode abgerufen wird. Nur diejenigen Descendents werden aufgeführt, die mit „XName“ übereinstimmen. |
Attributes(„XName“) | Wiedergibt eine Collection der Attribute des Elements oder Dokuments, indem die Methode abgerufen wird. Nur diejenigen Attribute werden aufgeführt, die dem „XName“ zugewiesen sind. |
Weitere Methoden können in der Microsoft .Net Dokumentation unter folgendem Link eingesehen werden:
https://docs.microsoft.com/en-us/dotnet/api/system.xml.linq.xdocument?view=netcore-3.1#methods
XML-Werte in Datentabelle überschreiben
Die unterschiedlichen Abfragemethoden können beispielsweise dazu angewendet werden, um die Werte der eingelesenen und deserialisierten XML-Textdatei in eine Datentabelle zu übertragen. Über For Each Schlaufen können die einzelnen Attributnamen und die dazugehörigen Werte in Spalten oder Kolonnen einer Datentabelle überschrieben werden. Aus einer Datentabelle heraus können die XML-Informationen einfacher abgefragt und für weitere Use Cases angewendet werden.