Pregunta:
Fecha: 14-12-2017 12:02:13
(En Español)
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:
Desde ya gracias por sus comentarios.
Votos: 0 - Respuestas: 1 - Vistas: 13 Compartir en: Google Facebook Twitter LinkedIn Link
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.
Votos: 0 - Respuestas: 1 - Vistas: 13 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 17-12-2017 20:07:21 Hola Dyan,
Para cosas complicadas utiliza DOM. Todo lo que mencionas lo puedes hacer con esa extensión. Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión