php - PHP - 评估 SOAP 响应并从响应中检索字符串值
问题描述
我正在尝试从肥皂响应中检索字符串值,但无论我尝试什么,我都会不断地取回一个对象。我已经尝试了在 StackO 上找到的所有解决方案。我要么得到一个对象,要么得到一个空值。
我想要包含在“line”元素中的值。在这个特定的响应中,只会返回 1 个“line”元素。
$adapterResponse = simplexml_load_string($response);
$Line = $adapterResponse ->xpath('line');
示例 XML:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns1:executeProcessResponse xmlns:ns1="http://bmc.com/ao/xsd/2008/09/soa">
<ns1:Output>
<ns1:Output ns1:type="xs:anyType">
<ns1:Parameter>
<ns1:Name>XML_Output</ns1:Name>
<ns1:Value ns1:type="xs:anyType">
<ns1:XmlDoc>
<XML_Output>
**<line>INVALID</line>**
</XML_Output>
</ns1:XmlDoc>
</ns1:Value>
</ns1:Parameter>
</ns1:Output>
</ns1:Output>
</ns1:executeProcessResponse>
解决方案
问题看起来像是 XPath 表达式在错误的位置寻找<line>
元素。 line
只会在当前节点中查找元素,如果改为使用//line
,则表示在当前节点中的任何位置查找节点...
$Line = $adapterResponse ->xpath('//line');
所以如果你这样做
print_r($Line);
你会得到
Array
(
[0] => SimpleXMLElement Object
(
[0] => INVALID
)
)
推荐阅读
- angular - (角度单元测试)未捕获的错误:未捕获(承诺):错误:无法匹配任何路由。URL Segment: 'B1' , (毕竟抛出了一个错误)
- swift - 如何使用谷歌标签管理器 v5 快速编码,尤其是增强电子商务部分?
- javascript - 垂直对齐表格中的按钮,上面有不同的文本大小(使用引导网格)
- c++ - QMediaPlayer 在睡眠前不播放
- c++ - 为什么标准不将模板构造函数视为复制构造函数?
- amazon-web-services - 允许对单个存储桶进行读写访问的 Amazon S3 策略
- jquery - 使用 jQuery 动态更新 DOM,使用 .blur 和 .click 切换元素
- docker - Docker 运行入口点参数禁用已发布的端口
- python - 无法导入 pypi 模块
- regex - perl:如何删除两个模式之间的特定单词或模式