Rexx - XML
XML ist eine tragbare Open-Source-Sprache, mit der Programmierer Anwendungen entwickeln können, die von anderen Anwendungen gelesen werden können, unabhängig vom Betriebssystem und / oder der Entwicklungssprache. Dies ist eine der am häufigsten verwendeten Sprachen für den Datenaustausch zwischen Anwendungen.
Was ist XML?
Die XML-Erweiterungssprache ist eine Auszeichnungssprache, die HTML oder SGML sehr ähnlich ist. Dies wird vom World Wide Web Consortium empfohlen und ist als offener Standard verfügbar. XML ist äußerst nützlich, um kleine bis mittlere Datenmengen zu verfolgen, ohne ein SQL-basiertes Backbone zu benötigen.
Verwenden wir für alle unsere XML-Codebeispiele die folgende einfache XML-Datei movies.xml zum Erstellen der XML-Datei und zum anschließenden Lesen der Datei.
<collection shelf = "New Arrivals">
<movie title = "Enemy Behind">
<type>War, Thriller</type>
<format>DVD</format>
<year>2003</year>
<rating>PG</rating>
<stars>10</stars>
<description>Talk about a US-Japan war</description>
</movie>
<movie title = "Transformers">
<type>Anime, Science Fiction</type>
<format>DVD</format>
<year>1989</year>
<rating>R</rating>
<stars>8</stars>
<description>A schientific fiction</description>
</movie>
<movie title = "Trigun">
<type>Anime, Action</type>
<format>DVD</format>
<year>1986</year>
<rating>PG</rating>
<stars>10</stars>
<description>Vash the Stam pede!</description>
</movie>
<movie title = "Ishtar">
<type>Comedy</type>
<format>VHS</format>
<year>1987</year>
<rating>PG</rating>
<stars>2</stars>
<description>Viewable boredom </description>
</movie>
</collection>
Anfangen
Standardmäßig ist die XML-Funktionalität nicht im Rexx-Interpreter enthalten. Um mit XML in Rexx arbeiten zu können, müssen die folgenden Schritte ausgeführt werden.
Laden Sie die folgenden Dateien herunter -
Rexxxml - www.interlog.com/~ptjm/
Libxml2 - www.ctindustries.net/libxml/
iconv-1.9.2.win32 - www.xmlsoft.org/sources/win32/oldreleases/
libxslt-1.1.26.win32 - www.xmlsoft.org/sources/win32/oldreleases/
Extrahieren Sie alle Dateien und stellen Sie sicher, dass sie im Systempfad enthalten sind.
Laden von XML-Funktionen
Nachdem alle Dateien im obigen Abschnitt heruntergeladen und erfolgreich registriert wurden, besteht der nächste Schritt darin, den Code zum Laden der Rexx-XML-Funktionen zu schreiben. Dies erfolgt mit dem folgenden Code.
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
Die folgenden Dinge können über das obige Programm bemerkt werden -
Die Funktion rxfuncaddwird zum Laden externer Bibliotheken verwendet. Dasxmlloadfuncs Funktion wird verwendet, um alle Bibliotheken in der zu laden rexxxml Datei in den Speicher.
Wenn der Wert von rcc <> 0 ist, würde dies zu einem Fehler führen. Dafür können wir die anrufenrxfuncerrmsg um uns weitere Details zur Fehlermeldung zu geben.
Wir rufen endlich an xmlloadfuncs, sodass jetzt alle XML-bezogenen Funktionen im Rexx-Programm aktiviert werden können.
Schauen wir uns die verschiedenen an methods available for XML in Rexx.
xmlVersion
Diese Methode gibt die Version der auf dem System verwendeten XML- und XSLT-Bibliotheken zurück.
Syntax
xmlVersion()
Parameter
Keiner
Rückgabewert
Diese Methode gibt die Version der auf dem System verwendeten XML- und XSLT-Bibliotheken zurück.
Beispiel
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
Wenn wir das obige Programm ausführen, erhalten wir das folgende Ergebnis. Dies hängt wiederum von der Version der XML-Bibliotheken ab, die auf dem System verwendet werden.
Ausgabe
1.0.0 20631 10126
xmlParseXML
Diese Funktion wird verwendet, um die an die Funktion gesendeten XML-Daten zu analysieren. Der Dokumentbaum wird von der Funktion zurückgegeben.
Syntax
xmlParseXML(filename)
Parameter
Filename - Dies ist der Name der XML-Datei, die analysiert werden muss.
Rückgabewert
Der Dokumentbaum wird von der Funktion zurückgegeben. Andernfalls wird 0 zurückgegeben, wenn ein Fehler vorliegt.
Beispiel
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
sw = xmlParseXML('test.xml')
Ausgabe
Keine allgemeine Ausgabe.
xmlFindNode
Diese Methode wertet die aus XPath expressionan ihn weitergegeben. Dies wird zum Parsen des Dokumentbaums verwendet, um a zu erhaltennodeset die weiter verarbeitet werden kann.
Syntax
xmlParseXML(XPath,document)
Parameter
XPath - Dies ist der Pfad des Knotens in der XML-Datei.
document - Dies ist das XML-Dokument
Rückgabewert
Wertet den XPath-Ausdruck aus und gibt das Ergebnis als Knotensatz zurück, der später verwendet werden kann.
Beispiel
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
document = xmlParseXML('test.xml')
nodeset = xmlFindNode('//movie', document)
say xmlNodesetCount(nodeset)
Wenn wir das obige Programm ausführen, erhalten wir das folgende Ergebnis.
Ausgabe
4
Die Ausgabe zeigt die Anzahl der Filmknoten in unserer XML-Liste
xmlEvalExpression
Die folgende Methode wird verwendet, um einen XPath-Ausdruck auszuwerten und als Ergebnis eine Zeichenfolge zurückzugeben.
Syntax
xmlParseXML(XPath,Node)
Parameter
XPath - Dies ist der Pfad des Knotens in der XML-Datei.
document - Das spezifische Knotenelement.
Rückgabewert
Eine Zeichenfolge wird basierend auf dem an sie gesendeten XPath-Ausdruck zurückgegeben.
Beispiel
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
document = xmlParseXML('test.xml')
nodeset = xmlFindNode('//movie', document)
do j = 1 to xmlNodesetCount(nodeset)
value = xmlEvalExpression('type', xmlNodesetItem(nodeset, j))
say value
end
Wenn wir das obige Programm ausführen, erhalten wir das folgende Ergebnis.
Ausgabe
War, Thriller
Anime, Science Fiction
Anime, Action
Comedy