2

我已经挣扎了一段时间了。我从 web 服务得到响应,我得到这个 XML 作为响应。

然后我在 php 中使用 SimpleXML 加载它,但是当我打印它创建的数组时,它只解析父项而不解析子项。

  <cfdi:comprobante certificado="MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NjcwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMjA3MjcxNzAyMDBaFw0xNjA3MjcxNzAyMDBaMIHbMSkwJwYDVQQDEyBBQ0NFTSBTRVJWSUNJT1MgRU1QUkVTQVJJQUxFUyBTQzEpMCcGA1UEKRMgQUNDRU0gU0VSVklDSU9TIEVNUFJFU0FSSUFMRVMgU0MxKTAnBgNVBAoTIEFDQ0VNIFNFUlZJQ0lPUyBFTVBSRVNBUklBTEVTIFNDMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxETAPBgNVBAsTCFVuaWRhZCAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2TTQSPONBOVxpXv9wLYo8jezBrb34i/tLx8jGdtyy27BcesOav2c1NS/Gdv10u9SkWtwdy34uRAVe7H0a3VMRLHAkvp2qMCHaZc4T8k47Jtb9wrOEh/XFS8LgT4y5OQYo6civfXXdlvxWU/gdM/e6I2lg6FGorP8H4GPAJ/qCNwIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEATxMecTpMbdhSHo6KVUg4QVF4Op2IBhiMaOrtrXBdJgzGotUFcJgdBCMjtTZXSlq1S4DG1jr8p4NzQlzxsdTxaB8nSKJ4KEMgIT7E62xRUj15jI49qFz7f2uMttZLNThipunsN/NF1XtvESMTDwQFvas/Ugig6qwEfSZc0MDxMpKLEkEePmQwtZD+zXFSMVa6hmOu4M+FzGiRXbj4YJXn9Myjd8xbL/c+9UIcrYoZskxDvMxc6/6M3rNNDY3OFhBK+V/sPMzWWGt8S1yjmtPfXgFs1t65AZ2hcTwTAuHrKwDatJ1ZPfa482ZBROAAX1waz7WwXp0gso7sDCm2/yUVww==" condicionesdepago="Opcional" fecha="2013-09-09T16:02:52" folio="1" formadepago="PAGO HECHO EN UNA SOLA EXHIBICION" lugarexpedicion="Monterrey" metododepago="No Identificado" moneda="MN" nocertificado="20001000000100005867" numctapago="No Identificada" sello="nWlPxq6j7lhoYirja9hIliM1cG2wNJr6LBlbINzK+Q4cdNjRZGbO95K7a3kvwXGLLw3FodiASPY3C08jXFoNnvpCuvKTuhSBsAJ367AvNFvDnxPqlS8m3g4PAeA6dntvQvBaXHDFRgag1OpYmvu/jd0bksFexjDHktWIp84w2nU=" serie="A" subtotal="157.500000" tipodecomprobante="ingreso" total="182.700000" version="3.2" xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd">
   <cfdi:emisor nombre="CONCENTRICO SAPI DE CV" rfc="AAA010101AAA">
    <cfdi:domiciliofiscal calle="Lomas del Valle" codigopostal="12345" colonia="Residencial Sta. Barbara" estado="Nuevo Leon" localidad="Localidad" municipio="San Pedro" noexterior="456" nointerior="2A" pais="Mexico" referencia="referencia">
    </cfdi:domiciliofiscal>
    <cfdi:expedidoen calle="Lomas del Valle" codigopostal="12345" colonia="Residencial Sta. Barbara" estado="Nuevo Leon" localidad="Localidad" municipio="San Pedro" noexterior="456" nointerior="2A" pais="Mexico" referencia="referencia">
    </cfdi:expedidoen>
    <cfdi:regimenfiscal regimen="Requerido">
    </cfdi:regimenfiscal>
    <cfdi:regimenfiscal regimen="Requerido">
    </cfdi:regimenfiscal>
   </cfdi:emisor>
   <cfdi:receptor nombre="CONCENTRICO SAPI DE CV" rfc="CON1108174T9">
    <cfdi:domicilio calle="Lomas del Valle" codigopostal="12345" colonia="Residencial Sta. Barbara" estado="Nuevo Leon" localidad="Localidad" noexterior="456" nointerior="2A" pais="Mexico" referencia="referencia">
    </cfdi:domicilio>
   </cfdi:receptor>
   <cfdi:conceptos>
    <cfdi:concepto cantidad="1.000000" descripcion="Renta de Departamento" importe="100.000000" unidad="Renta" valorunitario="100.000000">
    </cfdi:concepto>
    <cfdi:concepto cantidad="1.000000" descripcion="Renta de Departamento" importe="105.000000" unidad="Renta" valorunitario="105.000000">
    </cfdi:concepto>
    <cfdi:concepto cantidad="1.000000" descripcion="Renta de Departamento" importe="110.000000" unidad="Renta" valorunitario="110.000000">
    </cfdi:concepto>
   </cfdi:conceptos>
   <cfdi:impuestos totalimpuestosretenidos="0.000000" totalimpuestostrasladados="25.200000">
    <cfdi:retenciones>
     <cfdi:retencion importe="0.000000" impuesto="IVA">
     </cfdi:retencion>
     <cfdi:retencion importe="0.000000" impuesto="ISR">
     </cfdi:retencion>
    </cfdi:retenciones>
    <cfdi:traslados>
     <cfdi:traslado importe="25.500000" impuesto="IVA" tasa="16">
     </cfdi:traslado>
    </cfdi:traslados>
   </cfdi:impuestos>
   <cfdi:complemento>
    <tfd:timbrefiscaldigital fechatimbrado="2013-09-03T16:27:17" nocertificadosat="20001000000100005867" sellocfd="nWlPxq6j7lhoYirja9hIliM1cG2wNJr6LBlbINzK+Q4cdNjRZGbO95K7a3kvwXGLLw3FodiASPY3C08jXFoNnvpCuvKTuhSBsAJ367AvNFvDnxPqlS8m3g4PAeA6dntvQvBaXHDFRgag1OpYmvu/jd0bksFexjDHktWIp84w2nU=" sellosat="iC/lFA0TABo5q8oad0tLgqdSSi9qdpmazyeYBjaYYUJc62qxiBUOcg7TF03lYYZzACqMmuXXvTRV8YGqoOAp6KvrioEIc5L3FCdkpqb3pxc/ReHUtp8cabKBpRfJ/clmWVXc0blBiZPe+0TtTE/n/aK6HOf4qyl1Z2T4CpfSO0w=" uuid="PRUEBAXX-XXXX-XXXX-XXXX-TIMBREPRUEBA" version="1.0" xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xsi:schemalocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/TimbreFiscalDigital/TimbreFiscalDigital.xsd">
    </tfd:timbrefiscaldigital>
   </cfdi:complemento>
  </cfdi:comprobante>

有 XML ......当你将它传递给 php 和 print_r 结果时,它看起来不像原来的!很多元素都不见了!

4

2 回答 2

4

获取示例Lomas del Valle

var_dump((string)$xml->children('cfdi',true)->emisor->expedidoen->attributes()->calle);

请参阅这些页面。
http://php.net/manual/en/simplexmlelement.children.php
http://php.net/manual/en/simplexmlelement.attributes.php

于 2013-09-05T21:11:36.997 回答
0

Well, i was looking into your case for a half of hour, and i found solution. The problem is that php interprets tag name (cfdi) till double dots. after double dots, for php is like attribute. so in your case, if you want to parse it, you will need to use without keys.

my solution for this case is:

xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $simple_xml_string, $array_of_values, $array_of_index);
xml_parser_free($xml_parser);

var_dump($array_of_values);
于 2013-09-05T20:50:49.560 回答