SOAP响应PHP Array,到达节点属性

时间:2017-11-09 18:46:56

标签: php arrays soap response

我试图将以下响应转换为PHP中的数组,我想要达到里面的数据' Timbre',我需要以下值:

  • UUID
  • FechaTimbrado
  • SelloSAT

我在这里尝试过的解决方案可以很好地转换节点,但我找不到超越“Timbre”的方法,希望你能帮助我找到一种方法这样做,这是我收到的回复:

<?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <soap:Header>
            <ResponseHeader trackId="119588" RequestDateTime="2017-11-09T11:55:39.0205969-06:00" IPCaller="187.190.165.93" ClienteId="0" Estatus="1" ID="91a407fe-c1c2-40af-bc2d-5aee58606161" Detail="" Ambiente="DESARROLLO-01" xmlns="https://cfdi.timbrado.com.mx/timbradov2">
                <CFDI Id="CFDI33" FechaHora="2017-11-09T11:45:30" RFCEmisor="XXXHHK2343434" RFCReceptor="GFGDS45&667" Serie="G" Folio="35010" />
            </ResponseHeader>
        </soap:Header>
        <soap:Body>
            <GeneraTimbreResponse xmlns="https://cfdi.timbrado.com.mx/timbradov2">
                <GeneraTimbreResult>
                    <Timbre>
                        <tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd" Version="1.1" UUID="91A407FE-C1C2-40AF-BC2D-5AEE58606161" FechaTimbrado="2017-11-09T11:55:39" RfcProvCertif="ASE0209252Q1" Leyenda="Timbre de prueba" SelloCFD="WCldH0Oan7h2VK3MuMM3Nv8HAg/OlCaKF2VLz/1u81yvZItgZuYia1Aaz27hOYsqBZ/m5/OhAaL6TZ43MZSF6zK9tZz+Fgu9wS2QJ+ubk/83oIjQDwLHCuJL/l5VRZI29RoPUfs3VDb+tD9mqeEinQwfLJG1YkoCIWC/4oXxL1oX5DEXqMW/sK52jpJh7exyqw+GzBA+LUBaSi+aGHlown8cEQmZOZieeUW5uXjDPQBdJBZ/XkRgfqzAiS/Tfj9a61B0Nrm7JyejagPZVW7E3gbcmFunWTbGwNEYvqWkgtnO7aoTzrVcjK3YX4t2zKPt8F7BGq+MSL/fge174IttGQ==" NoCertificadoSAT="20001000000300022323" SelloSAT="NhzPGgUh+1vQJkidObRpp+IgjSdOm6wwgMVVcPdEVmVEbFgCBW42a7grzg8toe9d/ZlHhka5g6h63E5jp3xKcq2KnWw+dQbrbh8xDNHC+7tPXEJN9T5JU8ZifpvTIu9g89TYERUs/4sLgAYtqAmV9AIQK17LoAIiNRdUzwWiiHUCLaqL7k0bmJYvfeuYAnkw52LfyxzLDg6TyodT/1LjJVwhGLyaOcOwCDObHH8ukZj0d2aOwOEE0IJBbbIgh3VaIp0/EvvFn1I1F9BnrLHVZFEcR3ZeP/TyLJmuOtxLGDnPtnaVQTrt0sQb43bG2R2ut5Bt3uS12xOMx3IfDr/3FQ==" />
                    </Timbre>
                </GeneraTimbreResult>
            </GeneraTimbreResponse>
        </soap:Body>
    </soap:Envelope>

1 个答案:

答案 0 :(得分:0)

所以我这样解决了,如果有人知道'更优雅'的方式,请告诉我

//here I read the result string I posted above
$soap     = simplexml_load_string(html_entity_decode($this->resultado_timbre));
//I read the nodes until I reach the 'Timbre' one
$response = $soap->children('http://www.w3.org/2003/05/soap-envelope')->Body->children()->children()->children()->Timbre->children('tfd',TRUE);
//The attributes are readable in a nice array
        $atributos=$response->attributes();

希望它有所帮助!