51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3020|回复: 4
打印 上一主题 下一主题

[求助] loadRunner lr_xml_get_values 出错

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-7-8 11:16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我新建了一个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.
哪位大哥能否帮帮忙,指点指点,小弟感激不尽
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2012-7-8 12:57:53 | 只看该作者
貌似好像这个函数要在http/html协议中才能用吧
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2012-7-8 13:58:51 | 只看该作者
回复 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.
不知道还有没有其它方法可以取到值,麻烦赐教,万分感谢!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2012-7-8 14:43:50 | 只看该作者
谢谢楼上兄弟的指点,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元素中的值 不是数字而是字母, 那么这种方式就可以取到值。
不知道那位兄弟 还有其它方法没有,求告知。谢谢!!!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2012-7-8 21:49:45 | 只看该作者
谢谢老师的指点。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-28 08:09 , Processed in 0.074868 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表