Rexx - XML
XML è un linguaggio portatile e open source che consente ai programmatori di sviluppare applicazioni che possono essere lette da altre applicazioni, indipendentemente dal sistema operativo e / o dal linguaggio di sviluppo. Questa è una delle lingue più comuni utilizzate per lo scambio di dati tra le applicazioni.
Cos'è l'XML?
L'Extensible Markup Language XML è un linguaggio di markup molto simile a HTML o SGML. Questo è consigliato dal World Wide Web Consortium e disponibile come standard aperto. XML è estremamente utile per tenere traccia di piccole e medie quantità di dati senza richiedere un backbone basato su SQL.
Per tutti i nostri esempi di codice XML, utilizziamo il seguente semplice file XML movies.xml per la costruzione del file XML e la successiva lettura del file.
<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>
Iniziare
Per impostazione predefinita, la funzionalità xml non è inclusa nell'interprete Rexx. Per lavorare con XML in Rexx, è necessario seguire i seguenti passaggi.
Scarica i seguenti file:
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/
Estrai tutti i file e assicurati che siano inclusi nel percorso di sistema.
Caricamento di funzioni XML
Una volta che tutti i file nella sezione precedente sono stati scaricati e registrati con successo, il passo successivo è scrivere il codice per caricare le funzioni XML Rexx. Questo viene fatto con il codice seguente.
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
Le seguenti cose possono essere notate sul programma di cui sopra:
La funzione rxfuncaddviene utilizzato per caricare librerie esterne. Ilxmlloadfuncs viene utilizzata per caricare tutte le librerie nel file rexxxml file in memoria.
Se il valore di rcc <> 0, risulterebbe in un errore. Per questo, possiamo chiamare il filerxfuncerrmsg per fornirci maggiori dettagli sul messaggio di errore.
Finalmente facciamo una chiamata a xmlloadfuncs, in modo che tutte le funzionalità relative a xml possano ora essere abilitate nel programma Rexx.
Diamo un'occhiata ai vari methods available for XML in Rexx.
xmlVersion
Questo metodo restituisce la versione delle librerie XML e XSLT utilizzate nel sistema.
Sintassi
xmlVersion()
Parametri
Nessuna
Valore di ritorno
Questo metodo restituisce la versione delle librerie XML e XSLT utilizzate nel sistema.
Esempio
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
Quando eseguiamo il programma sopra, otterremo il seguente risultato. Ciò dipende ancora dalla versione delle librerie XML utilizzate nel sistema.
Produzione
1.0.0 20631 10126
xmlParseXML
Questa funzione viene utilizzata per analizzare i dati XML inviati alla funzione. L'albero del documento viene restituito dalla funzione.
Sintassi
xmlParseXML(filename)
Parametri
Filename - Questo è il nome del file XML che deve essere analizzato.
Valore di ritorno
L'albero del documento viene restituito dalla funzione. Altrimenti restituisce 0, in caso di errore.
Esempio
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
sw = xmlParseXML('test.xml')
Produzione
Nessun output generale.
xmlFindNode
Questo metodo valuta il XPath expressionpassato ad esso. Viene utilizzato per analizzare l'albero del documento per ottenere un filenodeset che può essere ulteriormente elaborato.
Sintassi
xmlParseXML(XPath,document)
Parametri
XPath - Questo è il percorso del nodo nel file xml.
document - Questo è il documento XML
Valore di ritorno
Valuta l'espressione XPath e restituisce il risultato come un set di nodi che può essere utilizzato in seguito.
Esempio
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)
Quando eseguiamo il programma sopra, otterremo il seguente risultato.
Produzione
4
L'output mostra il numero di nodi del film nel nostro elenco xml
xmlEvalExpression
Il metodo seguente viene utilizzato per valutare un'espressione XPath e restituire una stringa come risultato.
Sintassi
xmlParseXML(XPath,Node)
Parametri
XPath - Questo è il percorso del nodo nel file xml.
document - L'elemento nodo specifico.
Valore di ritorno
Viene restituita una stringa in base all'espressione XPath inviata.
Esempio
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
Quando eseguiamo il programma sopra, otterremo il seguente risultato.
Produzione
War, Thriller
Anime, Science Fiction
Anime, Action
Comedy