Rexx - XML
XML est un langage open source portable qui permet aux programmeurs de développer des applications qui peuvent être lues par d'autres applications, quel que soit le système d'exploitation et / ou le langage de développement. C'est l'un des langages les plus couramment utilisés pour l'échange de données entre applications.
Qu'est-ce que XML?
Le XML du langage de balisage extensible est un langage de balisage semblable au HTML ou au SGML. Ceci est recommandé par le World Wide Web Consortium et disponible en tant que norme ouverte. XML est extrêmement utile pour garder une trace de petites et moyennes quantités de données sans avoir besoin d'un backbone basé sur SQL.
Pour tous nos exemples de code XML, utilisons le simple fichier XML suivant movies.xml pour la construction du fichier XML et la lecture du fichier ultérieurement.
<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>
Commencer
Par défaut, la fonctionnalité xml n'est pas incluse dans l'interpréteur Rexx. Afin de travailler avec XML dans Rexx, les étapes suivantes doivent être suivies.
Téléchargez les fichiers suivants -
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/
Extrayez tous les fichiers et assurez-vous qu'ils sont inclus dans le chemin du système.
Chargement des fonctions XML
Une fois que tous les fichiers de la section ci-dessus ont été téléchargés et enregistrés avec succès, l'étape suivante consiste à écrire le code pour charger les fonctions XML Rexx. Ceci est fait avec le code suivant.
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
Les choses suivantes peuvent être notées à propos du programme ci-dessus -
La fonction rxfuncaddest utilisé pour charger des bibliothèques externes. lexmlloadfuncs permet de charger toutes les bibliothèques dans le rexxxml fichier en mémoire.
Si la valeur de rcc <> 0, cela entraînerait une erreur. Pour cela, nous pouvons appeler lerxfuncerrmsg pour nous donner plus de détails sur le message d'erreur.
Nous faisons enfin un appel à xmlloadfuncs, afin que toutes les fonctionnalités liées au xml puissent maintenant être activées dans le programme Rexx.
Regardons les différents methods available for XML in Rexx.
xmlVersion
Cette méthode renvoie la version des bibliothèques XML et XSLT utilisées sur le système.
Syntaxe
xmlVersion()
Paramètres
Aucun
Valeur de retour
Cette méthode renvoie la version des bibliothèques XML et XSLT utilisées sur le système.
Exemple
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
Lorsque nous exécutons le programme ci-dessus, nous obtiendrons le résultat suivant. Cela dépend à nouveau de la version des bibliothèques XML utilisées sur le système.
Production
1.0.0 20631 10126
xmlParseXML
Cette fonction est utilisée pour analyser les données XML envoyées à la fonction. L'arborescence du document est renvoyée par la fonction.
Syntaxe
xmlParseXML(filename)
Paramètres
Filename - C'est le nom du fichier XML qui doit être analysé.
Valeur de retour
L'arborescence du document est renvoyée par la fonction. Else renvoie 0, s'il y a une erreur.
Exemple
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
sw = xmlParseXML('test.xml')
Production
Pas de sortie générale.
xmlFindNode
Cette méthode évalue le XPath expressionpassé à lui. Ceci est utilisé pour analyser l'arborescence du document afin d'obtenir unnodeset qui peuvent être traités ultérieurement.
Syntaxe
xmlParseXML(XPath,document)
Paramètres
XPath - Il s'agit du chemin du nœud dans le fichier xml.
document - C'est le document XML
Valeur de retour
Évalue l'expression XPath et renvoie le résultat sous la forme d'un ensemble de nœuds qui peut être utilisé ultérieurement.
Exemple
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)
Lorsque nous exécutons le programme ci-dessus, nous obtiendrons le résultat suivant.
Production
4
La sortie montre le nombre de nœuds de film dans notre liste xml
xmlEvalExpression
La méthode ci-dessous est utilisée pour évaluer une expression XPath et renvoyer une chaîne en conséquence.
Syntaxe
xmlParseXML(XPath,Node)
Paramètres
XPath - Il s'agit du chemin du nœud dans le fichier xml.
document - L'élément de nœud spécifique.
Valeur de retour
Une chaîne est renvoyée en fonction de l'expression XPath qui lui est envoyée.
Exemple
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
Lorsque nous exécutons le programme ci-dessus, nous obtiendrons le résultat suivant.
Production
War, Thriller
Anime, Science Fiction
Anime, Action
Comedy