2013-09-05 5 views
2

저는 지금 당분간 어려움을 겪고 있습니다. 나는 웹 서비스로부터 응답을 얻었고이 XML을 응답으로 얻는다.SimpleXML 만 파싱 최상위 레벨

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 결과가 원본처럼 보이지 않습니다! 많은 요소가 누락되었습니다!

+0

당신은 당신의 코드를 좀 더 보여줄 수 있습니까? 특히 XML을 처리하는 곳은 어디입니까? – msturdy

+0

나는 xml을 문자열로 가지고 있으므로 이렇게 처리 만한다. $ xml = simplexml_load_string ("xmlstring"); 결과는 내가 당신에게 말하고있는 문제입니다! – dmarcos

답변

0

글쎄, 나는 한 시간 반 동안 네 사건을 조사하고 있었고, 해결책을 찾았습니다. 문제는 php가 이중 점까지 태그 이름 (cfdi)을 해석한다는 것입니다. 이중 점 뒤에는 PHP와 같은 특성이 있습니다. 그래서 당신의 경우, 당신이 그것을 분석하고 싶다면, 당신은 키없이 사용할 필요가있을 것이다. 이 경우에 대한

내 솔루션은 다음과 같습니다 Lomas del Valle을 얻기를위한

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); 
관련 문제