51Testing软件测试论坛
标题:
loadRunner lr_xml_get_values 出错
[打印本页]
作者:
蓝色太阳水
时间:
2012-7-8 11:16
标题:
loadRunner lr_xml_get_values 出错
我新建了一个windows sockets 脚本,然后从帮助文档中将 lr_xml_get_values 函数的实例代码拷贝到 Action中,代码如下:
#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"); // Save input as parameter
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++) { /* Print multiple values of OutputParam */
sprintf (buf, "Retrieved value %d : {OutputParam_%d}", i+1, i+1);
lr_output_message(lr_eval_string(buf));
}
return 0;
}
报错信息: Action.c(27): Error: C interpreter run time error: Action.c (27): Error -- Unresolved symbol : lr_xml_get_values.
哪位大哥能否帮帮忙,指点指点,小弟感激不尽
作者:
云层
时间:
2012-7-8 12:57
貌似好像这个函数要在http/html协议中才能用吧
作者:
蓝色太阳水
时间:
2012-7-8 13:58
回复
2#
云层
非常感谢兄弟的提醒,我在http/html协议中试了确实可以,这一点受教了。谢谢。
不过我现在是 服务端 返回了一个XML文件格式的内容,我定义了一个 变量
char *strRecvBuf = NULL;
然后调用了方法
lrs_get_last_received_buffer( strSock_start, &strRecvBuf, &intRecvLen );
将 strRecvBuf 打印 内容如下:
"000803612011 <?xml version="1.0" encoding="GBK"?><accumfund>
<head>
<is_finish>00</is_finish>
<tx_code>612011</tx_code>
<channel_flag>0</channel_flag>
<request_seq_no>0</request_seq_no>
<service_date></service_date>
<service_time>175721</service_time>
<service_serial_no>100013184</service_serial_no>
<ret_code>00000</ret_code>
<ret_explain>操作成功!</ret_explain>
<detail_num>1</detail_num>
<bkpinnode></bkpinnode>
<bkmacnode></bkmacnode>
<bktotnum></bktotnum>
<h_branch_no>06221</h_branch_no>
<h_teller_no>0001392</h_teller_no>
<h_author_id></h_author_id>
</head>
<body>
<totallist>
<totalrow/>
</totallist>
<list>
<row>
<batch_no>2012070732752</batch_no>
</row>
</list>
</body>
</accumfund>"
我想取 <ret_code>00000</ret_code> 中的 00000 老是取不到,如果值不是0, 是其他字母就可以取到。
我取值的方法是 memcpy(retcode,strRecvBuf+86,5); retcode 是事先定义好的, 86 是表示 上面5个0的第一个0的位置,当然在上面的这个XML格式中 第一个0的位置并不是86.
不知道还有没有其它方法可以取到值,麻烦赐教,万分感谢!
作者:
蓝色太阳水
时间:
2012-7-8 14:43
谢谢楼上兄弟的指点,lr_xml_get_values 这个函数确实只能在http/html协议中才能,我试过了。
其实我是想截取XML文件中某个元素的内容。
我现在的问题是 服务端发送了一个XML格式的内容给我,我要截取其中的内容,例如
我定义了一个变量
char *strRecvBuf = NULL;
然后调用方法接收内容
rs_get_last_received_buffer( strSock_start, &strRecvBuf, &intRecvLen );
接收完之后打印 strRecvBuf 变量 内容如下:
"000803612011 <?xml version="1.0" encoding="GBK"?><accumfund>
<head>
<is_finish>00</is_finish>
<tx_code>612011</tx_code>
<channel_flag>0</channel_flag>
<request_seq_no>0</request_seq_no>
<service_date></service_date>
<service_time>175721</service_time>
<service_serial_no>100013184</service_serial_no>
<ret_code>00000</ret_code>
<ret_explain>操作成功!</ret_explain>
<detail_num>1</detail_num>
<bkpinnode></bkpinnode>
<bkmacnode></bkmacnode>
<bktotnum></bktotnum>
<h_branch_no>06221</h_branch_no>
<h_teller_no>0001392</h_teller_no>
<h_author_id></h_author_id>
</head>
<body>
<totallist>
<totalrow/>
</totallist>
<list>
<row>
<batch_no>2012070732752</batch_no>
</row>
</list>
</body>
</accumfund>"
我要截取 <ret_code>00000</ret_code> 中的 00000
我调用方法 截取字符
memcpy(retcode,strRecvBuf+86,5); 86表示的是上面5个0中第一个0的位置,当然上面这个XML中第一个0的位置并不是 86,具体是多少 我没有记下来。
如果ret_code元素中的值 不是数字而是字母, 那么这种方式就可以取到值。
不知道那位兄弟 还有其它方法没有,求告知。谢谢!!!
作者:
蓝色太阳水
时间:
2012-7-8 21:49
谢谢老师的指点。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2