Nueva pregunta

Pregunta:

Fecha: 14-12-2017 12:02:13 (En Español)

Lectura de archivo XML .¿ Cómo puedo leer la estructura de un XML , que inicia con Namespaces y tiene Namespaces antes que nodos?[No resuelta]

Hola estoy desarrollando una aplicación para leer el contenido de un archivo XML, el cual tiene una estructura definida por el proveedor , este documento sera recibido siempre con la misma o parecida estructura a la siguiente.

<?xml version="1.0" encoding="UTF-8"?>
<ar:ApplicationResponse xmlns:ar="urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><ext:UBLExtensions><ext:UBLExtension><ext:ExtensionContent><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
  <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/>
  <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"/>
  <Reference URI="">
    <Transforms>
      <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
      <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/>
    </Transforms>
    <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    <DigestValue>VmLvrHdapHSfw7RkSLgIs6aRhW4=</DigestValue>
  </Reference>
</SignedInfo>
<SignatureValue>LqjjcWwWo1MYefir9Mk77ON0cdDbmacq/4H8x4MgioQKRXEeDwSswdq5ZDVodI98XU4S+nJhOAmuIZZu60ueRbNmp1U8XxCR/2L6salLNarUBjutlB8AepqHKHMUC0NXk4/xy6SNb4vv3HU5f5knKN71wPLHqXEAwpmkAXwHs70vSfotH9YB4pIHdgemEpNuB5gKuemKJwsqSM9hb7Rs5Y/rAXWsN3g2BOsG98wVDsgcVTgekJZgFKWxg/ueFOoqe30f0JCaQzkwj2fPQxsqBD4wlLfFF2NwcbArEa1rKOc8Cm080ds4TWSDUZeffC2JeXvq2BjX5r4Z0hiD7dqFrQ==</SignatureValue>
<KeyInfo>
    <X509Data>
        <X509Certificate>MIIFDTCCA/WgAwIBAgIQcR21vYFHZBQpIpS4bSJITjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxLzAtBgNVBAMTJlN5bWFudGVjIENsYXNzIDMgU2VjdXJlIFNlcnZlciBDQSAtIEc0MB4XDTE1MDcwODAwMDAwMFoXDTE4MDgwNjIzNTk1OVowgY8xCzAJBgNVBAYTAlBFMQ0wCwYDVQQIEwRMaW1hMQ0wCwYDVQQHFARMaW1hMUcwRQYDVQQKFD5TVVBFUklOVEVOREVOQ0lBIE5BQyBERSBBRFVBTkFTIFkgREUgQURNSU5JU1RSQUNJT04gVFJJQlVUQVJJQTEZMBcGA1UEAxQQd3d3LnN1bmF0LmdvYi5wZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMHHsPBubtLaQx4K1s2zLVY84lPnhcM35CL9SrbX2pu7+NQaBrCxuNDyPljAm8+duqE4OENo9P234/kmo8gLr0mAVNtyM7jgp9Hg5yraO0ZiW7rvy+cXbAPX/dooxk1kdtaZk2VIIfFIbJYaYuYQqfvm+HJBbiDPYJ+HuTuS2tkfhcaLJ4ZKSsbC1Do2C7tw/HJLE23/EoX+5F4foGofr4mP8ZpU3jHPzRHzT+OnR2bzGylQKRaOx+qK/Ke1hQ6LpZ2bA/WGOB53iHLxVO9hTgjhMJRGJLhSAo4v3MrXsXwOZcZbyjq0QT/9oHSIDuKgcTdDHfgj/FWoTLylzc9DUX0CAwEAAaOCAXMwggFvMCkGA1UdEQQiMCCCEHd3dy5zdW5hdC5nb2IucGWCDHN1bmF0LmdvYi5wZTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIFoDBhBgNVHSAEWjBYMFYGBmeBDAECAjBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3ltY2IuY29tL2NwczAlBggrBgEFBQcCAjAZDBdodHRwczovL2Quc3ltY2IuY29tL3JwYTArBgNVHR8EJDAiMCCgHqAchhpodHRwOi8vc3Muc3ltY2IuY29tL3NzLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUX2DPYZBV34RDFIpgKrL1evRDGO8wVwYIKwYBBQUHAQEESzBJMB8GCCsGAQUFBzABhhNodHRwOi8vc3Muc3ltY2QuY29tMCYGCCsGAQUFBzAChhpodHRwOi8vc3Muc3ltY2IuY29tL3NzLmNydDANBgkqhkiG9w0BAQsFAAOCAQEAAV9RparWSV40OOHKa/XojkjhQpJMUsULfLc1rlVLhUHGPRcLlf+YBEPrQJL5Q/XI3oxEpwZB4dKSZNbJ1ksO/kdC+mPIWEt2j1KfNg3qT+cf7gjFAvxyaYVU2/lRoWgurwN04GzvLNi6PhUm3OLX1D7A5fdBhS8Y9VNVcJ/6Jad8QGC5ozg41b4fZj2IZt450eBqQMNxW2S6aOnx/HGquwf9xPqeCE0f5J6yjwTlZN8kcf1uBZducgkuRkla6/WjmlAM29KnKAWrBCl+ss56rXsSl5H6Jp8G4oiWHEoDs4PGMmzRzpnV7/mnSaoNtEqf7usZpy5bIkhpH9Wtu+An6Q==</X509Certificate>
        <X509IssuerSerial>
            <X509IssuerName>CN=Symantec Class 3 Secure Server CA - G4, OU=Symantec Trust Network, O=Symantec Corporation, C=US</X509IssuerName>
            <X509SerialNumber>150357026262863852396357537837718063182</X509SerialNumber>
        </X509IssuerSerial>
    </X509Data>
</KeyInfo>
<Proposito>Cumple proposito</Proposito>
<Revocacion>Cumple revocacion</Revocacion>
<TSL>Cumple tsl</TSL>
<Expiracion>No ha expirado</Expiracion>
</Signature>
</ext:ExtensionContent>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:ID>201701617256164</cbc:ID>
<cbc:IssueDate>2017-12-13</cbc:IssueDate>
<cbc:IssueTime>00:00:00</cbc:IssueTime>
<cbc:ResponseDate>2017-12-13</cbc:ResponseDate>
<cbc:ResponseTime>09:22:59</cbc:ResponseTime>
<cac:Signature>
    <cbc:ID>SignSUNAT</cbc:ID>
    <cac:SignatoryParty>
        <cac:PartyIdentification>
            <cbc:ID>20131312955</cbc:ID>
        </cac:PartyIdentification>
        <cac:PartyName>
            <cbc:Name>SUNAT</cbc:Name>
        </cac:PartyName>
    </cac:SignatoryParty>
    <cac:DigitalSignatureAttachment>
        <cac:ExternalReference>
            <cbc:URI>#SignSUNAT</cbc:URI>
        </cac:ExternalReference>
    </cac:DigitalSignatureAttachment>
</cac:Signature>
<cbc:Note nombre="jojojo"  >4016 - El total valor venta neta de oper. gravadas IGV debe ser mayor a 0.00 o debe existir oper. gravadas onerosas - INFO : 4016 (nodo: "sac:AdditionalMonetaryTotal/cbc:ID" valor: "1001")</cbc:Note>
<cac:SenderParty>
    <cac:PartyIdentification>
        <cbc:ID>20131312955</cbc:ID>
    </cac:PartyIdentification>
</cac:SenderParty>
<cac:ReceiverParty>
    <cac:PartyIdentification>
        <cbc:ID>20123053037</cbc:ID>
    </cac:PartyIdentification>
</cac:ReceiverParty>
<cac:DocumentResponse>
    <cac:Response>
        <cbc:ReferenceID>F008-00002639</cbc:ReferenceID>
        <cbc:ResponseCode>0</cbc:ResponseCode>
        <cbc:Description>La Factura numero F008-00002639, ha sido aceptada</cbc:Description>
    </cac:Response>
    <cac:DocumentReference>
        <cbc:ID>F008-00002639</cbc:ID>
    </cac:DocumentReference>
    <cac:RecipientParty>
        <cac:PartyIdentification>
            <cbc:ID>6-20325698625</cbc:ID>
        </cac:PartyIdentification>
    </cac:RecipientParty>
</cac:DocumentResponse>
</ar:ApplicationResponse>



Se que para leer un archivo xml, debería usar los nodos e ir recorriendo según la jerarquía de estos . Pero el problema es que incluso el inicio no es un nodo sino un Namespaces , en la documentación solo encontré ejemplos básicos sobre el método getNamespaces.

Y si bien obtengo los valores del primer NAMESPACE , DE LA ESTRUCTURA del archivo , aun no he podido , usar la estructura para poder leer el archivo . AUN NO ME HE TOPADO CON ALGUNA FUNCION QUE ME PUEDA DAR LA SOLUCION, por ahora estoy realizando pruebas con XPath().


La función para obtener namespace:


$sxe = simplexml_load_file("archivo.xml");

$namespaces = $sxe->getNamespaces(true);
var_dump($namespaces);




Desde ya gracias por sus comentarios.


Etiquetas: PHP - Pregunta - Script PHP - SimpleXML - XML Votos: 0 - Respuestas: 1 - Vistas: 13 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com