<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:body>
<ns1:mbillcommandresponse xmlns:ns1="http://www.mysoap.com/SoapService/">
<ReturnValues>
<name>status</name>
<value>TEHNICAL_ERROR</value>
</ReturnValues>
<ReturnValues>
<name>description</name>
<value>Please contact your administrator</value>
</ReturnValues>
</ns1:mbillcommandresponse>
</soapenv:body>
</soapenv:envelope>
上面我在我的 CURL 响应中得到了响应。这是我的 PHP 代码:
$response = curl_exec($ch);
$xml = simplexml_load_string($response);
//$result = $xml->xpath('//name'); //echo "<pre>"; print_r($result); exit;
$xml->registerXPathNamespace('ns1', 'http://www.mysoap.com/SoapService/');
foreach ($xml->xpath('//returnvalues') as $item) {
$json = json_encode($item);
$convrt_arr = json_decode($json, true);
break;
}
print_r($json); exit;
在我上面的代码中,我得到了空的 json。你能帮帮我吗?
最佳答案
您的问题编辑是一个重要线索。您将 XML 从具有小写元素更改为 CamelCase 元素。变化:
foreach ($xml->xpath('//returnvalues') as $item) {
到:
foreach ($xml->xpath('//ReturnValues') as $item) {
它会起作用的。 Xpath 查询区分大小写。
关于php - 如何将 SOAP 响应转换为 XML 或 JSON 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51056145/