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