出错函数代码: lr_xml_get_values("XML={response}", "FastQuery=/Envelope/Body/receiveMessageResponse/return", "ValueParam=ResultCode", LAST); lr_save_string(lr_eval_string("{response}"), "ResultCode"); lr_output_message(lr_eval_string("{response}")); //获取并输出参数response的当前值
详细信息: Action.c(102): 通知: 参数替换:参数“response”=“--uuid:53d41ed6-3229-4952-a109-ac0ca6e9f57b\r\nContent-Type: application/xop+xml; charset=UTF-8; type="text/xml";\r\nContent-Transfer-Encoding: binary\r\nContent-ID: root.message@cxf.apache.org\r\n\r\n<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">soap:Body<ns0:receiveMessageResponse xmlns:ns0="http://impl.webservice.agri.adapter.ecif.picc.com/"> <?xml version="1.0" encoding="UTF-8"?><TCRMService xmlns="http://www.ibm.com/mdm/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com/mdm/schema MDMDomains.xsd"><ResponseControl><ResultCode>SUCCESS</ResultCode></ResponseControl><TxResponse><RequestType>processMessage</RequestType><TxResult><ResultCode>SUCCESS</ResultCode><ECIFCustomerNumber>10029301380112</ECIFCustomerNumber></TxResult></TxResponse></TCRMService> </ns0:receiveMessageResponse></soap:Body></soap:Envelope>\r\n--uuid:53d41ed6-3229-4952-a109-ac0ca6e9f57b--” Action.c(102): Error: Fast query failed - reason: Invalid document structure (line 1, col 1). [class:CLrXmlScriptFunc] Action.c(102): Error: "lr_xml_get_values" 执行失败
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
从您提供的错误信息来看,问题出在使用lr_xml_get_values
函数处理XML数据时。错误提示为“Fast query failed - reason: Invalid document structure (line 1, col 1).”,这表明LR(LoadRunner)在尝试解析XML时遇到了无效的文档结构问题,具体发生在第1行第1列。
根据您的代码片段和错误信息,这里有几个可能的原因及解决建议:
XML格式问题:错误提示中的“Invalid document structure”通常意味着输入给lr_xml_get_values
的XML字符串格式不正确。从输出的{response}
内容看,它以--uuid:
开头,这看起来像是MIME多部分编码(Multiparts MIME)或SOAP消息与附件的组合形式,并非纯XML格式。如果lr_xml_get_values
期望的是直接的XML内容,那么需要确保提取的是纯净的XML部分,去掉任何额外的MIME封装或报文头信息。
处理MIME多部分内容:如果响应确实是MIME多部分的,你可能需要先解析出XML部分再进行处理。这可能涉及到分割响应字符串,找到正确的边界标记(--uuid...
)并提取出XML段落。
空格或特殊字符:有时候,即使是微小的格式问题,如多余的空白字符或不恰当的换行符,也可能导致解析失败。检查XML数据的开始是否有多余的空白字符或不被XML解析器接受的特殊字符。
使用正确的XPath表达式:确认XPath表达式/Envelope/Body/receiveMessageResponse/return
是否正确对应于你的XML结构。由于实际的XML内容未完全展示,确保这个路径是基于实际XML的有效路径。
提取纯净XML:首先,确保你只处理XML有效部分。如果响应中包含MIME包装,你需要先剥离掉这些非XML的部分。
验证XML格式:可以使用在线XML验证工具来检查提取出的XML字符串是否格式良好且符合XML标准。
调整XPath表达式:再次确认XPath表达式的正确性,必要时根据实际的XML结构调整。
错误处理:在代码中增加错误处理逻辑,比如捕获并打印更详细的错误信息,有助于定位问题所在。
如果是在阿里云的环境中处理这类问题,虽然阿里云没有直接提供针对LoadRunner脚本调试的支持服务,但你可以利用阿里云日志服务(SLS)来收集和分析这类运行时错误日志,帮助远程诊断问题。同时,对于API测试和性能测试,考虑使用阿里云PTS(Performance Testing Service)服务,它提供了更加现代化和集成化的测试解决方案,支持复杂的API测试场景,包括对返回的复杂响应结构的处理能力。