📜  Rexx-XML

📅  最后修改于: 2020-11-02 04:02:59             🧑  作者: Mango


XML是一种可移植的开放源代码语言,它使程序员能够开发可由其他应用程序读取的应用程序,而与操作系统和/或开发语言无关。这是用于在应用程序之间交换数据的最常见的语言之一。

什么是XML?

可扩展标记语言XML是一种类似于HTML或SGML的标记语言。万维网联盟建议这样做,并且可以作为开放标准使用。 XML对于跟踪少量到中等数量的数据而无需基于SQL的主干非常有用。

对于我们所有的XML代码示例,让我们使用以下简单的XML文件movie.xml来构造XML文件并随后读取该文件。

 
    
      War, Thriller 
      DVD 
      2003 
      PG 
      10 
      Talk about a US-Japan war 
    
   
    
      Anime, Science Fiction 
      DVD 
      1989 
      R 
      8 
      A schientific fiction 
    
   
    
      Anime, Action 
      DVD 
      1986 
      PG 
      10 
      Vash the Stam pede! 
    
   
    
      Comedy 
      VHS 
      1987 
      PG 
      2 
      Viewable boredom  
    

入门

默认情况下,Rexx解释器不包含xml功能。为了在Rexx中使用XML,需要遵循以下步骤。

加载XML函数

上一节中的所有文件均已下载并成功注册后,下一步就是编写代码以加载Rexx XML函数。这是通过以下代码完成的。

rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs') 

if rcc then do 
   say rxfuncerrmsg() 
   exit 1 
end 
call xmlloadfuncs

关于上述程序,需要注意以下几点:

  • 函数rxfuncadd用于加载外部库。 xmlloadfuncs函数用于将rexxxml文件中的所有库加载到内存中。

  • 如果rcc <> 0,则将导致错误。为此,我们可以调用rxfuncerrmsg为我们提供有关错误消息的更多详细信息。

  • 最后,我们调用xmlloadfuncs ,以便现在可以在Rexx程序中启用所有与xml相关的功能。

让我们看看Rexx中可用于XML的各种方法

xmlVersion

此方法返回系统上使用的XML和XSLT库的版本。

句法

xmlVersion()

参量

没有

返回值

此方法返回系统上使用的XML和XSLT库的版本。

rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs') 

if rcc then do 
   say rxfuncerrmsg() 
   exit 1 
end 
call xmlloadfuncs 
say xmlVersion() 

当我们运行上面的程序时,我们将得到以下结果。这又取决于系统上使用的XML库的版本。

输出

1.0.0 20631 10126 

xmlParseXML

该函数用于解析发送给该函数的XML数据。函数将返回文档树。

句法

xmlParseXML(filename) 

参量

  • 文件名-这是需要解析的XML文件的名称。

返回值

函数将返回文档树。如果有错误,否则返回0。

rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs') 

if rcc then do 
   say rxfuncerrmsg() 
   exit 1 
end 
call xmlloadfuncs 

say xmlVersion() 
sw = xmlParseXML('test.xml') 

输出

没有一般输出。

xmlFindNode

此方法评估传递给它的XPath表达式。这用于解析文档树以生成可以进一步处理的节点集

句法

xmlParseXML(XPath,document) 

参量

  • XPath-这是xml文件中节点的路径。

  • document-此XML文档

返回值

计算XPath表达式并将结果作为节点集返回,以便以后使用。

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)

当我们运行上述程序时,将得到以下结果。

输出

4

输出显示了我们的xml列表中的电影节点数

xmlEvalExpression

下面的方法用于评估XPath表达式并返回一个字符串作为结果。

句法

xmlParseXML(XPath,Node) 

参量

  • XPath-这是xml文件中节点的路径。

  • document-特定节点元素。

返回值

根据发送给它的XPath表达式返回一个字符串。

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

当我们运行上面的程序时,我们将得到以下结果。

输出

War, Thriller 
Anime, Science Fiction 
Anime, Action 
Comedy