Rexx - XML
XML é uma linguagem portátil e de código aberto que permite aos programadores desenvolver aplicativos que podem ser lidos por outros aplicativos, independentemente do sistema operacional e / ou linguagem de desenvolvimento. Esta é uma das linguagens mais comuns usadas para trocar dados entre aplicativos.
O que é XML?
A Extensible Markup Language XML é uma linguagem de marcação muito parecida com HTML ou SGML. Isso é recomendado pelo World Wide Web Consortium e está disponível como um padrão aberto. XML é extremamente útil para manter o controle de pequenas e médias quantidades de dados sem exigir um backbone baseado em SQL.
Para todos os nossos exemplos de código XML, vamos usar o seguinte arquivo XML simples movies.xml para construção do arquivo XML e leitura do arquivo posteriormente.
<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>
Começando
Por padrão, a funcionalidade xml não está incluída no interpretador Rexx. Para trabalhar com XML no Rexx, as seguintes etapas devem ser seguidas.
Baixe os seguintes arquivos -
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/
Extraia todos os arquivos e certifique-se de que estejam incluídos no caminho do sistema.
Carregando funções XML
Depois que todos os arquivos na seção acima foram baixados e registrados com sucesso, a próxima etapa é escrever o código para carregar as funções Rexx XML. Isso é feito com o seguinte código.
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
As seguintes coisas podem ser observadas sobre o programa acima -
A função rxfuncaddé usado para carregar bibliotecas externas. oxmlloadfuncs função é usada para carregar todas as bibliotecas no rexxxml arquivo na memória.
Se o valor de rcc <> 0, isso resultaria em um erro. Para isso, podemos chamar orxfuncerrmsg para nos fornecer mais detalhes sobre a mensagem de erro.
Finalmente ligamos para xmlloadfuncs, para que todas as funcionalidades relacionadas a xml agora possam ser ativadas no programa Rexx.
Vejamos os vários methods available for XML in Rexx.
xmlVersion
Este método retorna a versão das bibliotecas XML e XSLT usadas no sistema.
Sintaxe
xmlVersion()
Parâmetros
Nenhum
Valor de retorno
Este método retorna a versão das bibliotecas XML e XSLT usadas no sistema.
Exemplo
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
Quando executamos o programa acima, obteremos o seguinte resultado. Novamente, isso depende da versão das bibliotecas XML que estão sendo usadas no sistema.
Resultado
1.0.0 20631 10126
xmlParseXML
Esta função é usada para analisar os dados XML enviados para a função. A árvore do documento é retornada pela função.
Sintaxe
xmlParseXML(filename)
Parâmetros
Filename - Este é o nome do arquivo XML que precisa ser analisado.
Valor de retorno
A árvore do documento é retornada pela função. Else retorna 0, se houver um erro.
Exemplo
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
sw = xmlParseXML('test.xml')
Resultado
Sem saída geral.
xmlFindNode
Este método avalia o XPath expressionpassou para ele. Isso é usado para analisar a árvore do documento para resultar em umnodeset que pode ser processado posteriormente.
Sintaxe
xmlParseXML(XPath,document)
Parâmetros
XPath - Este é o caminho do nó no arquivo xml.
document - Este é o documento XML
Valor de retorno
Avalia a expressão XPath e retorna o resultado como um conjunto de nós que pode ser usado posteriormente.
Exemplo
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 executamos o programa acima, obteremos o seguinte resultado.
Resultado
4
A saída mostra o número de nós do filme em nossa lista xml
xmlEvalExpression
O método a seguir é usado para avaliar uma expressão XPath e retornar uma string como resultado.
Sintaxe
xmlParseXML(XPath,Node)
Parâmetros
XPath - Este é o caminho do nó no arquivo xml.
document - O elemento de nó específico.
Valor de retorno
Uma string é retornada com base na expressão XPath enviada a ela.
Exemplo
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 executamos o programa acima, obteremos o seguinte resultado.
Resultado
War, Thriller
Anime, Science Fiction
Anime, Action
Comedy