首页 > 解决方案 > 将 XML 转换为 PHP

问题描述

嗨,我知道如何从这个 SimpleXML 对象中获取 DisplayURL 的值,在尝试了该站点上发布的所有评论后,DisplayURL 总是为空的,任何想法都会非常感激。

谢谢你!

SimpleXMLElement Object
(
[soapBody] => SimpleXMLElement Object
    (
        [GetOrderDetailsResponse] => SimpleXMLElement Object
            (
                [GetOrderDetailsResult] => <?xml version="1.0" encoding="utf-16"?>
<QuestMethodResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <MethodID>GETORDERDETAIL</MethodID>
  <ClientReferenceID xsi:nil="true" />
  <ReferenceTestID>2102207</ReferenceTestID>
  <QuestOrderID>14706080</QuestOrderID>
  <ResponseStatusID>SUCCESS</ResponseStatusID>
  <DisplayURL>https://esp-load.employersolutions.com/Integration/OrderDetail</DisplayURL>
  <Errors />
</QuestMethodResponse>
            )

    )

)

标签: xmlsoap

解决方案


这是我的功能

public function order($id = null, $student_id = null, $requirement_id = null)
{
    $url = "https://qcs-uat.questdiagnostics.com/services/ESPService.asmx?wsdl";
    
    $options = [
        'soap_version' => SOAP_1_2,
        'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP,
        'classmap' => ['order' => 'questOrderDetail'],
        'execptions' => true,
        'trace' => true,
    ];

    try {
        $client = new SOAPClient($url, $options);
        //dd($client->__getFunctions());            
        $params = array(
            "username" => "removed",
            "password" => "removed",
            "questOrderId" => "14706080"
        );
        $response = $client->GetOrderDetails($params);
        dump($response);
        $xml = simplexml_load_string($xml->GetOrderDetailsResult, 'SimpleXMLElement', LIBXML_NOCDATA);
        $json = json_encode($xml);
        $xml_parse = json_decode($json, TRUE); 
        dd($xml_parse);
    } catch (Exception  $e) {
        echo 'Message: ' .$e->getMessage();
    }               
    die;
}

这是回应

stdClass Object
(
    [GetOrderDetailsResult] => <?xml version="1.0" encoding="utf-16"?>
<QuestMethodResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <MethodID>GETORDERDETAIL</MethodID>
  <ClientReferenceID xsi:nil="true" />
  <ReferenceTestID>2102207</ReferenceTestID>
  <QuestOrderID>14706080</QuestOrderID>
  <ResponseStatusID>SUCCESS</ResponseStatusID>
  <DisplayURL>https://esp-load.employersolutions.com/Integration/OrderDetail?access_token=7d217186-84a6-4151-aa03-9317aab58b2b</DisplayURL>
  <Errors />
</QuestMethodResponse>
)

我的目标是获取 ReponseStatusID 和 DisplayURL 的值

谢谢你!


推荐阅读