Foros del Web » Programando para Internet » PHP »

Ayuda con un objeto (simple xml)

Estas en el tema de Ayuda con un objeto (simple xml) en el foro de PHP en Foros del Web. Hola de nuevo, aqui ando de nuevo pidiendoles su valiosa ayuda. Bueno les explico cual es mi problema: Tengo una aplicacion de facturacion electronica y ...
  #1 (permalink)  
Antiguo 12/03/2010, 19:50
Avatar de yeudiel  
Fecha de Ingreso: abril-2008
Ubicación: Ciudad de México
Mensajes: 78
Antigüedad: 14 años, 2 meses
Puntos: 1
Sonrisa Ayuda con un objeto (simple xml)

Hola de nuevo, aqui ando de nuevo pidiendoles su valiosa ayuda. Bueno les explico cual es mi problema:

Tengo una aplicacion de facturacion electronica y esta genera la factura en un archivo xml la cual pongo aqui:

Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<Comprobante fecha="2005-09-02T16:30:00" folio="1" noAprobacion="1" noCertificado="00001000000000000114" sello="iYyIk1MtEPzTxY3h57kYJnEXNae9lvLMgAq3jGMePsDtEOF6XLWbrV2GL/2TX00vP2+YsPN+5UmyRdzMLZGEfESiNQF9fotNbtA487dWnCf5pUu0ikVpgHvpY7YoA4lB1D/JWc+zntkgW+Ig49WnlKyXi0LOlBOVuxckDb7EAx4=" serie="A" version="1.0">
	<Emisor nombre="Industrias del Sur Poniente, S.A. de C.V." rfc="ISP900909Q88">
		<DomicilioFiscal calle="Alvaro Obregón" codigoPostal="06700" colonia="Col. Roma Norte" estado="Distrito Federal" localidad="México" municipio="Cuauhtémoc" noExterior="37" noInterior="3" pais="México"/>
		<ExpedidoEn calle="Pino Suarez" codigoPostal="95460" colonia="Centro" estado="Nuevo Léon" localidad="Monterrey" municipio="Monterrey" noExterior="23" pais="México"/>
	</Emisor>
	<Receptor nombre="Rosa María Calderón Uriegas" rfc="CAUR390312S87">
		<Domicilio calle="Topochico" codigoPostal="95465" colonia="Jardines del Valle" estado="Nuevo León" localidad="Monterrey" municipio="Monterrey" noExterior="52" pais="México"/>
	</Receptor>
	<Conceptos>
		<Concepto cantidad="10" descripcion="Vasos decorados" importe="200" unidad="Caja" valorUnitario="20"/>
		<Concepto cantidad="1" descripcion="Charola metálica" importe="150" unidad="pieza" valorUnitario="150"/>
	</Conceptos>
	<Impuestos>
		<Traslados>
			<Traslado importe="52.5" impuesto="IVA"/>
		</Traslados>
	</Impuestos>
</Comprobante> 
Lo que quiero hacer es parsear este xml para obtener todos los datos de los namespace, para esto uso simplexml, pero no logro obtener la informacion como quiero, por que esta funcion me devuelve un objeto y como el XML entre los namespace no tiene informacion, todo esta en atributos de cada namespace y en cada factura los atributos cambian, es decir, en una el namespace de traslado tiene el atributo importe e impuesto, pero en otra con otro cliente tiene el de importe, impuesto, tasa y descuento. Lo que necesito es obtener tanto el valor de cada namespace y atributos en varias variables (seria mejor un array) para manejarlas despues.


Logre hacer un pequeño codigo q genera un array pero como cada factura es diferente, en las q tienen los mismos namespace no hay pex, pero en las diferentes no me funciona, aki les dejo una pequeña muestra de mi rudimentario codigo, XD:

Código PHP:
$xml simplexml_load_file($dir."DWM000001.xml");
$generales $xml->attributes();
$dato=array();
$x=0;
foreach (
$generales as $key => $val 
    {
$dato["cabecera"][$x]=(string)$val;
$x++;
     } 
con un print_r devuelve [0],[1],[2] y etc. pero si hay una propiedad mas en medio o al principio o donde sea, se agrega un numero mas al array y me deja diferente todo.

Si alguien me pudiera ayudar de antemano mil gracias
  #2 (permalink)  
Antiguo 13/03/2010, 18:52
Avatar de yeudiel  
Fecha de Ingreso: abril-2008
Ubicación: Ciudad de México
Mensajes: 78
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Ayuda con un objeto (simple xml)

Bueno pues al final logre resolverlo. Otra muestra mas de lo grande que es el autodidacta, jejejeje. Tuve un solucion por lo menos temporal.

Para acceder a las propiedas de un objeto se puede hacer esto:


$totales[$y]=$xml->Impuestos->Traslados->Traslado["importe"];

Gracias de todos modos a los q pensaron que tenian la respuesta en la punta de la lengua y se les olvido al final, XD. Aunque cualquier otra solucion mas guay me podria ayudar.

Etiquetas: namespace, objetos, simplexml
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 16:55.