Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO No puedo obtener los datos del nodo raiz de un XML con PHP

Estas en el tema de No puedo obtener los datos del nodo raiz de un XML con PHP en el foro de PHP en Foros del Web. Tengo la siguiente cadena es una factura electronica que se expide en México y necesito saber como puedo obtener algunos valores como total del nodo ...
  #1 (permalink)  
Antiguo 07/01/2012, 18:14
 
Fecha de Ingreso: enero-2012
Mensajes: 24
Antigüedad: 12 años, 10 meses
Puntos: 0
No puedo obtener los datos del nodo raiz de un XML con PHP

Tengo la siguiente cadena es una factura electronica que se expide en México y necesito saber como puedo obtener algunos valores como total del nodo raiz llamado Comprobante actualmente utilizo este codigo que me funciona con los demas nodos.

<?php

$xmlFileData = file_get_contents('factura.xml');

//Utilizamos la clase SimpleXMLElement
$xmlData = new SimpleXMLElement($xmlFileData);


//Mostrar el parseo por un foreach
foreach ($xmlData->Comprobante as $valor){
$variable = $valor['total'];
}
echo $variable

?>


Este es el XML de prueba:

<?xml version="1.0" encoding="UTF-8"?>
<Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd" version="2.0" serie="M" folio="3226" fecha="2011-12-28T14:11:01" sello="G5bx10iG7NFtrMw0uyimUTVsrVlCTnu48AJvbCU//Ok9LS+CpB7UTzPlZIoXoq3RTHwM+ypJInXSt9h7asp/yMGuhB553wv4INxVe/6DEAyCdsiSsu+dAtM6ANpZ9tINRzpsfnDYVEPf08n4kAJzw6e8 YTez41xpbnDAUsZuJEQ=" noAprobacion="1784267" anoAprobacion="2011" formaDePago="Pago en una sola exhibición" noCertificado="00001000000102372259" certificado="MIIEITCCAwmgAwIBAgIUMDAwMDEwMDAwMDAxM DIzNzIyNTkwDQYJKoZIhvcNAQEFBQAwggE2MTgwNgYDVQQDDC9 BLkMuIGRlbCBTZXJ2aWNpbyBkZSBBZG1pbmlzdHJhY2nDs24gV HJpYnV0YXJpYTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5 pc3RyYWNpw7NuIFRyaWJ1dGFyaWExHzAdBgkqhkiG9w0BCQEWE GFjb2RzQHNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGd vIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELM AkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWw xEzARBgNVBAcMCkN1YXVodGVtb2MxMzAxBgkqhkiG9w0BCQIMJ FJlc3BvbnNhYmxlOiBGZXJuYW5kbyBNYXJ0w61uZXogQ29zczA eFw0xMDEyMTMyMDAxMzlaFw0xMjEyMTIyMDAxMzlaMIHBMSEwH wYDVQQDExhHUlVQTyBBTERBUkFNSVogU0EgREUgQ1YxITAfBgN VBCkTGEdSVVBPIEFMREFSQU1JWiBTQSBERSBDVjEhMB8GA1UEC hMYR1JVUE8gQUxEQVJBTUlaIFNBIERFIENWMSUwIwYDVQQtExx HQUwwNDA1MDRMSjUgLyBBQUhGNjExMjA5UEYyMR4wHAYDVQQFE xUgLyBBQUhGNjExMjA5SE1OTFJMMDMxDzANBgNVBAsTBlVOSUR BRDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuuEofRVSy nXEdpL+h0Dm0SrsH4cNmP2m2MiBpCrEM53DDJrCKdzo8XqO8b/SwuwZo6fbj7gKtfseGjG7IF8AVot0GIWSK/9eLGCoHfDDWpKnvDBeqTRUCKW7RBs7wZt802wdfPBU7B37pcHz ZTJgFbUu9o066vyglqAM2WjYoXkCAwEAAaMdMBswDAYDVR0TAQ H/BAIwADALBgNVHQ8EBAMCBsAwDQYJKoZIhvcNAQEFBQADggEBAG 0oqG5CGapL2NIyWEZ9KkgN/EsYDyrlLfITfUl3fhQ8HmDZe8eDFay2tWVJQAMMxTxZdrftwOt Z5G3T5es2viN1fM7PWo6AS/OdIqqC+PYYX1Vg/a3CBXuiznFOkFCqtB1SY9I+VXjDrNq9rqBLWbsM0tl7yqVqGmA RLJwtDW2EQ/2anI9M9afa5DUP+QKj6pqO3DX/KkdEtTBOtn1gjr8KCoHGRo9hBb6aICZmMO1u55CkWlojpfoKbE v2P6v5zO/hMumUzWqumdkjLOZ5/HO5nDi1OCvrgDDKtIys4EJYJVEAvpGEsJ+KiKbEnZ3B4HwfKfE 9KmXIEo/RFVIriVg=" subTotal="1315.75" total="1526.27" tipoDeComprobante="ingreso">

<Emisor rfc="#" nombre="#"><DomicilioFiscal calle="COLON" noExterior="14-A" noInterior="A" colonia="CENTRO" localidad="ZAMORA MICH." municipio="ZAMORA" estado="MICHOACAN" pais="MEXICO" codigoPostal="59600"></DomicilioFiscal><ExpedidoEn calle="ZAMORA MICH." pais="MEXICO"></ExpedidoEn></Emisor><Receptor rfc="X" nombre="X"><Domicilio calle="BLVD ADOLFO LOPEZ MATEOS" noExterior="653" colonia="CENTRO" municipio="LA PIEDAD" estado="MEXICO" pais="MEXICO" codigoPostal="59300"></Domicilio></Receptor>
<Conceptos>
<Concepto cantidad="1" unidad="pz" descripcion="PRINT CARTRIDGE YELLOW MPC2051 / 2551" valorUnitario="1315.75" importe="1315.75"></Concepto>

</Conceptos>

<Impuestos totalImpuestosTrasladados="210.52"><Traslados><Tra slado impuesto="IEPS" tasa="0.00" importe="0.00"></Traslado><Traslado impuesto="IVA" tasa="16.00" importe="210.52"></Traslado></Traslados></Impuestos>
</Comprobante>
  #2 (permalink)  
Antiguo 07/01/2012, 18:49
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 16 años, 2 meses
Puntos: 10
Respuesta: No puedo obtener los datos del nodo raiz de un XML con PHP

Tomate un respiro, lee lo que escribiste, editalo, agregale algunas comas, agrega el codigo de lo que si te funciona y vamos a tener un mejor punto de partida para ayudarte.
  #3 (permalink)  
Antiguo 07/01/2012, 19:02
 
Fecha de Ingreso: enero-2012
Mensajes: 24
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: No puedo obtener los datos del nodo raiz de un XML con PHP

Va de nuevo...

Tengo un archivo XML donde el nodo principal se llama Comprobante, dentro de este nodo maneja atributos como son total, subtotal y otros. El codigo PHP que me funciona es este:

<?php

$xmlFileData = file_get_contents('factura.xml');

//Utilizamos la clase SimpleXMLElement
$xmlData = new SimpleXMLElement($xmlFileData);


//Mostrar el parseo por un foreach
foreach ($xmlData->Emisor as $valor){
$variable = $valor['rfc'];
}


echo $variable

?>

Con este codigo puedo acceder al valor rfc que se encuentra dentro del nodo Emisor... y así sucesivamente puedo acceder a cualquier información pero el problema es acceder al nodo total y subtotal que se encuentran en el nodo principal llamado Comprobante. Me explico
  #4 (permalink)  
Antiguo 07/01/2012, 19:05
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: No puedo obtener los datos del nodo raiz de un XML con PHP

Para esos atributos puedes hacer:

Código PHP:
Ver original
  1. <?php
  2. $xmlFileData = file_get_contents('test.xml');
  3. $xmlData = new SimpleXMLElement($xmlFileData);
  4. echo $xmlData['total']; //1526.27
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 07/01/2012, 19:08
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 16 años, 2 meses
Puntos: 10
Respuesta: No puedo obtener los datos del nodo raiz de un XML con PHP

Como explicacion adicional es que Comprobante es el nodo raiz, por lo que cuando haces $xmlData ya estas haciendo referencia al nodo raiz. Por eso como dijo andresdzphp con $xmlData['total'] ya accedes al atributo de Comprobante.
  #6 (permalink)  
Antiguo 07/01/2012, 19:10
 
Fecha de Ingreso: enero-2012
Mensajes: 24
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: No puedo obtener los datos del nodo raiz de un XML con PHP

Ok si me funciono.... muchas gracias por tomarse el tiempo de responder saludos.
  #7 (permalink)  
Antiguo 07/01/2012, 19:11
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: No puedo obtener los datos del nodo raiz de un XML con PHP

También te sirve:

Código PHP:
Ver original
  1. echo $xmlData->attributes()->total; //1526.27

y para recorrer todos con un bucle:

Código PHP:
Ver original
  1. foreach ($xmlData->attributes() as $c => $v) {
  2.     echo "$c => $v <br />";
  3. }

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: nodo, raiz, xml, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:21.