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.

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