/*****************************************************
*Author:flyer qi
*Date:2007-6-25
*MSN:qiguojie at hotmail dot com
*QQ:410225
******************************************************/
void str_get_param(char str[],char tag[],char
result[])//输入字符串和标签,返回标签的values
{
int i,j;//循环种子
int lenstr,lentag,lenres;//依次是字符串长度、标签长度和返回值的长度+1
int lb,rb;//values的左右坐标
int Islb,Isrb;//标签字符判断正确次数
lenstr = strlen(str);//get字符串长度
lentag = strlen(tag);//get标签长度
Islb = Isrb = 1;
for(i=0;i<lenstr;i++)//遍历str的每个字符
{
if (str =="<"[0])//如果str的当前字符是"<"
{
//lr_message("i=%d",i);
//debug info
for(j=0;j<lentag;j++)
//遍历比较tag标签长度的次数的str"<"后的字符和tag对应是否相等
{
if(str[i+1+j] == tag[j])
{
//lr_message("str[i+1+j]]=%c,tag[j]=%c,i=%d,j=%d",str[i+1+j],tag[j],i,j);
Islb+= 1;//如果相等则正确次数+1
// lr_message("Islb=%d,lentag=%d,str[i+1+lentag]=%c",Islb,str[i+1+lentag]);
}
else
{
Islb= 1;
break;
}
}
if((Islb==lentag)&&(str[i+1+lentag]==">"[0]))//如果正确次数和标签的长度相等并且标签后的字符是">"
{
lb= i+1+lentag+1;//确定左边界是">"后的坐标
// lr_message("str[i+1+j]]=%c,j=%d,lb=%d",j,lb);
}else
{
Islb=1;
}
}
if((str=="<"[0])&&(str[i+1]=="/"[0]))//如果str的当前字符是"<"并且"<"后的字符是"/"
{
for(j=0;j<lentag;j++)//遍历比较tag标签长度的次数的str"/"后的字符和tag对应是否相等
{
if(str[i+2+j] == tag[j])
{
// lr_message("str[i+2+j]=%c,str[i+2+j],j);
Isrb+= 1;//如果相等则正确次数+1
}
else
{
Isrb= 1;
break;
}
}
if ((Isrb ==lentag)&&(str[i+1+lentag+1]==">"[0]))//如果正确次数和标签的长度相等并且标签后的字符是">"
{
rb= i;//确定右边界是"<"的坐标
}else
{
Isrb=0;
}
}
}
if ((lb == 0)&&(lb == rb))
{
lr_message("没有此标记");
}else
{
lenres = rb-lb;
//获取values的长度
// lr_message("要获取的值的长度是%d",lenres);
// lr_message("要获取的值的左边界坐标是%d,值是%c,右边界坐标是%d,前面的值是%c",lb,str[lb],rb,str[rb-1]);
for(i=0;i<lenres;i++)//遍历values,赋值给返回值字符数组
{
// lr_message("result=%c,str=%c",result,str);
result =str[lb+i];
}
}
}
Action()
{
char re[1024];
// web_reg_save_param("Retcode","LB=<RetCode>","RB=</RetCode>",LAST);
// web_reg_save_param("message","LB=<Message>","RB=</Message>",LAST);
web_service_call( "StepName=sendXml_101",
"SOAPMethod=SMSWS.SMSWebServiceSoapPort.sendXml",
"Resp",
"Service=SMSWS",
"Snapshot=t1182823768.inf",
BEGIN_ARGUMENTS,
"Carrier=1",
"Id=111111",
"Password=111111",
"ToMobile=1111",
"Message=111",
"MsgType=111",
END_ARGUMENTS,
BEGIN_RESULT,
"sendXmlResult=res",
END_RESULT,
LAST);
str_get_param(lr_eval_string("{res}"),"Message",re);
lr_message("result=%s",re);
lr_think_time(3);
return 0;
}
============================
如果你想要><RetCode>10</RetCode>中的"10" 可以这样: lr_output_message(lr_eval_string("{response}")); lr_xml_get_values("XML={response}", "ValueParam=Result", "Query=//RetCode", LAST); lr_output_message(lr_eval_string("{Result}"));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。