从 php CURL 读取 SOAP XML

Read SOAP XML from php CURL

嗨,我有这个 xml 从肥皂 service.I 获得 xml 与卷曲。 如何访问 php 中的节点?结果可以有更多的结果集

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns3:ExampleResponse xmlns:ns3="http://example.com/ptfall" xmlns:ns2="http://example.com/soa">
            <return>
                <ns3:resultSet>
                    <ns3:categoria>
                        <ns2:codice>1</ns2:codice>
                        <ns2:descrizione>Esempio xxx</ns2:descrizione>
                    </ns3:categoria>
                    <ns3:causale>
                        <ns3:codice>_XXXXX</ns3:codice>
                        <ns3:descrizione>Annullo Mancato</ns3:descrizione>
                        <ns3:identificativo>
                            <ns2:long>74</ns2:long>
                        </ns3:identificativo>
                    </ns3:causale>
                    
                </ns3:resultSet>
               
                <ns3:serviceInfo>
                    <ns2:codiceErroreOccorso>0</ns2:codiceErroreOccorso>
                    <ns2:erroreOccorso>false</ns2:erroreOccorso>
                    <ns2:executionId>xxxxxxxxxxx</ns2:executionId>
                    <ns2:tipoErroreOccorso>0</ns2:tipoErroreOccorso>
                </ns3:serviceInfo>
            </return>
        </ns3:ExampleResponse>
    </soap:Body>
</soap:Envelope>

例如,我想 return 每个结果集的 ns3:descrizione 节点 我尝试使用这个但没有用

$soap = simplexml_load_string($data);
$response = $soap->children('http://schemas.xmlsoap.org/soap/envelope/')->Body->children()->ExampleResponse->........DUNNO HOW TO DO IT;
echo $response;

它比那要复杂一点,但是 - 对于你的例子 ns3:descrizione - 它可以这样完成:

$soap = simplexml_load_string($data);
$soap->registerXPathNamespace("ns3", "http://example.com/ptfall");
$resultSet = $soap->xpath('//ns3:resultSet');

foreach ($resultSet as $rs)
{   
    $infos  = $rs->xpath('.//*[local-name()="descrizione"]/text()');
    foreach ($infos as $target) {
        echo $target ."\r\n";
    }   
}

输出:

Esempio xxx
Annullo Mancato