php - 如何将 SOAP 响应转换为 XML 或 JSON 格式?

标签 php json xml soap

<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/

相关文章:

php - PDO 准备()仅在一台服务器上失败

CURLOPT_FOLLOWLOCATION 无法激活

PHP JSON_ENCODE 无法显示超过 1000 个 MySQL 表字段

javascript - 解析 JSON 响应时出现问题

javascript - W3Schools 无法复制 tryit 编辑器

python - 从 KML 中删除元素 (Python)

php - 比较多个字符串的文本

php - Oauth2-server-laravel 自定义消息响应

javascript - 如何定位 JSON 文件中的特定对象

java - 如何在 XQuery 中抑制 XML 输出的缩进