lr_xml_get_values()
检索查询找到的XML元素的值。
int lr_xml_get_values(<规范列表> [,<可选规范列表>] [,LAST]);
参数说明:
List of specifications:对于以下所需规格列表,请使用以下字符串格式:
“Specification = value”
XML:要查询的XML输入字符串
ValueParam:存储查询结果的输出参数的名称。如果不存在,则创建它。
Query:对输入字符串XML的XML查询或快速查询。您可以指定元素或属性。
List of optional specifications:对于以下可选规格列表,请使用以下字符串格式:
“Specification = value”
SelectAll:如果为“yes”,则将处理与查询匹配的所有元素。如果“否”,则仅处理第一个匹配。默认值为“no”。请参阅多查询匹配
NotFound:请参见继续出错
LAST:指示可选规范列表结束的标记
lr_xml_get_values函数查询XML输入字符串XML以查找与查询条件匹配的值。
示例:lr_xml_get_values
有关使用lr_xml_get_values的更多示例,请参阅示例1 - 在XML查询的示例脚本中执行查询和值相关函数。
实施例1
以下示例使用lr_xml_get_values搜索员工的姓名。
首先,一个简单的XML字符串存储在参数XML_Input_Param中。然后,使用XPath查询字符串“/ employee / name”调用lr_xml_get_values。然后,将在XML_Input_Param参数字符串上处理此查询。查询的结果存储在OutputParam参数中。 OutputParam的值使用lr_eval_string进行计算。
#include“as_web.h”
char * xml_input =
“<employee>”
“<name> John Smith </ name>”
“<cubicle> 227 </ cubicle>”
“</ employee>”;
Action(){
lr_save_string(xml_input,“XML_Input_Param”); //将输入保存为参数
lr_xml_get_values(“XML = {XML_Input_Param}”,
“ValueParam = OutputParam”,
“Query = / employee / name”,
LAST);
lr_output_message(lr_eval_string(“Query result = {OutputParam}”));
return 0;
}}
输出:
Action.c(13):“lr_xml_get_values”成功,处理1个匹配
Action.c(18):查询结果= John Smith
实施例2
以下示例与示例1类似,但检索到多个值。该查询从XML输入字符串xml_input检索所有电话机扩展。
#include“as_web.h”
char * xml_input =
“<acme_org>”
“<accounts_dept>”
“<employee>”
“<name> John Smith </ name>”
“<cubicle> 227 </ cubicle>”
“<extension> 2145 </ extension>”
“</ employee>”
“</ accounts_dept>”
“<engineering_dept>”
“<employee>”
“<name> Sue Jones </ name>”
“<extension> 2375 </ extension>”
“</ employee>”
“</ engineering_dept>”
“</ acme_org>”;
Action(){
int i,NumOfValues;
char buf [64];
lr_save_string(xml_input,“XML_Input_Param”); //将输入保存为参数
NumOfValues = lr_xml_get_values(“XML = {XML_Input_Param}”,
“ValueParam = OutputParam”,
“Query = / acme_org / * / employee / extension”,
“SelectAll = yes”,LAST);
for(i = 0; i <NumOfValues; i ++){/ *打印OutputParam *的多个值*
sprintf(buf,“Retrieved value%d:{OutputParam_%d}”,i + 1,i + 1);
lr_output_message(lr_eval_string(buf));
}}
return 0;
}}
输出:
Action.c(34):检索值1:2145
Action.c(34):检索值2:2375