XML
XML是一种可移植的开源语言,它允许程序员开发可由其他应用程序读取的应用程序,而不管操作系统和/或开发语言如何。 这是用于在应用程序之间交换数据的最常用语言之一。
什么是XML?
可扩展标记语言XML是一种非常类似于HTML或SGML的标记语言。 这是万维网联盟推荐的,可作为开放标准提供。 XML对于跟踪中小数据量而非需要基于SQL的主干非常有用。
对于我们所有的XML代码示例,让我们使用以下简单的XML文件movies.xml来构建XML文件并随后读取该文件。
<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>
入门
默认情况下,Reml解释器中不包含xml功能。 要在Rexx中使用XML,需要遵循以下步骤。
下载以下文件 -
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/
提取所有文件并确保它们包含在系统路径中。
加载XML函数 (Loading XML Functions)
一旦下载并成功注册了上一节中的所有文件,下一步就是编写代码以加载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相关的功能。
我们来看看methods available for XML in Rexx的各种methods available for XML in Rexx 。
xmlVersion
此方法返回系统上使用的XML和XSLT库的版本。
语法 (Syntax)
xmlVersion()
参数 (Parameters)
没有
返回值 (Return Value)
此方法返回系统上使用的XML和XSLT库的版本。
例子 (Example)
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
当我们运行上面的程序时,我们将得到以下结果。 这又取决于系统上使用的XML库的版本。
输出 (Output)
1.0.0 20631 10126
xmlParseXML
此函数用于解析发送到函数的XML数据。 文档树由函数返回。
语法 (Syntax)
xmlParseXML(filename)
参数 (Parameters)
Filename - 这是需要解析的XML文件的名称。
返回值 (Return Value)
文档树由函数返回。 如果有错误,则返回0。
例子 (Example)
rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')
if rcc then do
say rxfuncerrmsg()
exit 1
end
call xmlloadfuncs
say xmlVersion()
sw = xmlParseXML('test.xml')
输出 (Output)
没有一般输出。
xmlFindNode
此方法计算传递给它的XPath expression 。 这用于解析文档树以产生可以进一步处理的nodeset 。
语法 (Syntax)
xmlParseXML(XPath,document)
参数 (Parameters)
XPath - 这是xml文件中节点的路径。
document - 这是XML文档
返回值 (Return Value)
计算XPath表达式并将结果作为节点集返回,以后可以使用。
例子 (Example)
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)
当我们运行上面的程序时,我们将得到以下结果。
输出 (Output)
4
输出显示xml列表中的电影节点数
xmlEvalExpression
以下方法用于评估XPath表达式并返回字符串作为结果。
语法 (Syntax)
xmlParseXML(XPath,Node)
参数 (Parameters)
XPath - 这是xml文件中节点的路径。
document - 特定节点元素。
返回值 (Return Value)
根据发送给它的XPath表达式返回一个字符串。
例子 (Example)
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
当我们运行上面的程序时,我们将得到以下结果。
输出 (Output)
War, Thriller
Anime, Science Fiction
Anime, Action
Comedy