Foros del Web » Programando para Internet » PHP »

xml y php

Estas en el tema de xml y php en el foro de PHP en Foros del Web. Hola a todos estoy aprendiendo sobre xml y quisiera saber como puedo mostrar las variables de mi xml en una pagina php algo de mi ...
  #1 (permalink)  
Antiguo 20/09/2011, 17:12
Avatar de saseisa  
Fecha de Ingreso: agosto-2006
Mensajes: 329
Antigüedad: 17 años, 8 meses
Puntos: 9
xml y php

Hola a todos estoy aprendiendo sobre xml y quisiera saber como puedo mostrar las variables de mi xml en una pagina php
algo de mi xml
Código:
<direccion:Cliente nombre="PRUEBA PRUEBA PRUEBA" rfc="AAAA610917AAA">

<direccion:DomicilioFiscal codigoPostal="12300" localidad="CIUDAD DE MEXICO" noExterior="54" estado="DISTRITO FEDERAL" pais="MEXICO" municipio="MILPA ALTA" colonia="SAN SALVADOR CUAUHTENCO" calle="CEDROS"/>

</direccion:Cliente>
como puedo mostrarlo en una pagina php el nombre el rfc etc

desde ya gracias
  #2 (permalink)  
Antiguo 20/09/2011, 17:33
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: xml y php

Podrías publicar más de tu XML (o todo)? Donde tienes declarados los namespace Cliente y DomicilioFiscal?
__________________
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
  #3 (permalink)  
Antiguo 20/09/2011, 17:57
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: xml y php

Prueba usando simplexml http://php.net/manual/en/book.simplexml.php
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #4 (permalink)  
Antiguo 20/09/2011, 18:00
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: xml y php

Si eso se puede hacer con SimpleXML o DOMDocument

[APORTE] Leer XML con SimpleXML y DOM

pero no coloca todo el XML, para saber donde define los NAMESPACE Cliente y DomicilioFiscal
__________________
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 20/09/2011, 19:08
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Información Respuesta: xml y php

Bueno teniendo en cuenta que ya llevas varios días con este tema y te sigue dando duro, me puse en la tarea de hacerte un par de ejemplos.

A que me refiero con namespace?

<direccion:Cliente
<direccion:DomicilioFiscal
</direccion:Cliente>

ahí estás usando namescape (en negrita) y lo tienes que definir en tu XML (desconozco completamente si lo hiciste o no).

XML a modo de ejemplo, sólo con el fin de hacer estos ejercicios:

Código PHP:
Ver original
  1. <?php
  2. $xml = <<<XML
  3. <?xml version="1.0" encoding="UTF-8"?>
  4. <direccion:Cliente nombre="PRUEBA PRUEBA PRUEBA" rfc="AAAA610917AAA" xmlns:direccion="http://www.w3.org/2001/XMLSchema">
  5. <direccion:DomicilioFiscal codigoPostal="12300" localidad="CIUDAD DE MEXICO" noExterior="54" estado="DISTRITO FEDERAL" pais="MEXICO" municipio="MILPA ALTA" colonia="SAN SALVADOR CUAUHTENCO" calle="CEDROS"/>
  6. </direccion:Cliente>
  7. XML;

Si te das cuenta agregué la siguiente línea a tu XML, para que lo tome como definición de los namescape y las clases no me den error (SÓLO CON EL FIN DE HACER ESTOS EJEMPLOS) no quiere decir que esa sea la forma correcta de definirlo.

--> xmlns:direccion="http://www.w3.org/2001/XMLSchema"

Ejemplo con la clase SimpleXMLElement

Código PHP:
Ver original
  1. <?php
  2. $sp = new SimpleXMLElement($xml); //$xml = el XML a modo de ejemplo
  3. $ns = $sp->getNamespaces(true);
  4. $sp->registerXPathNamespace('d', $ns['direccion']);
  5. $cliente = $sp->xpath('//d:Cliente');
  6. $domicilio = $sp->xpath('//d:DomicilioFiscal');
  7.  
  8. echo '<h3>Datos del cliente</h3>';
  9. foreach ($cliente[0]->attributes() as $c => $atributo) {
  10.     echo "$c $atributo" . '<br />';
  11. }
  12. echo '<h3>Datos del domicilio</h3>';
  13. foreach ($domicilio[0]->attributes() as $c => $atributo) {
  14.     echo "$c $atributo" . '<br />';
  15. }

Ejemplo con la clase DOMDocument

Código PHP:
Ver original
  1. <?php
  2. $doc = new DOMDocument();
  3. $doc->loadXML($xml);  //$xml = el XML a modo de ejemplo
  4. $cliente = $doc->getElementsByTagNameNS($doc->lookupNamespaceUri('direccion'), 'Cliente');
  5. $domicilio = $doc->getElementsByTagNameNS($doc->lookupNamespaceUri('direccion'), 'DomicilioFiscal');
  6.  
  7. echo '<h3>Datos del cliente</h3>';
  8. foreach ($cliente->item(0)->attributes as $atributo) {
  9.     echo $atributo->name . ' ' . $atributo->nodeValue . '<br />';
  10. }
  11. echo '<h3>Datos del domicilio</h3>';
  12. foreach ($domicilio->item(0)->attributes as $atributo) {
  13.     echo $atributo->name . ' ' . $atributo->nodeValue . '<br />';
  14. }

El resultado de ambos ejemplos es:

Cita:
Datos del cliente

nombre PRUEBA PRUEBA PRUEBA
rfc AAAA610917AAA
Datos del domicilio

codigoPostal 12300
localidad CIUDAD DE MEXICO
noExterior 54
estado DISTRITO FEDERAL
pais MEXICO
municipio MILPA ALTA
colonia SAN SALVADOR CUAUHTENCO
calle CEDROS
Espero que le sea útil a las personas que trabajan con XML.

Nota: Pueden haber mejores formas de hacerlo y simplicarlo.

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
  #6 (permalink)  
Antiguo 21/09/2011, 11:47
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: xml y php

Por favor no me respondas por mensaje privado para que los demás aprendan...

Tu duda es ¿Cómo recorrer todos los conceptos de tu XML?

necesitas usar un bucle para cada concepto y otro bucle para cada atributo:

Código PHP:
Ver original
  1. <?php
  2. // TU ARCHIVO XML
  3. $xml = <<<XML
  4. <?xml version="1.0" encoding="UTF-8"?>
  5. <direccion:ruta xmlns:direccion="http://www.w3.org/2001/XMLSchema-instance">
  6. <direccion:Cliente nombre="PRUEBA PRUEBA PRUEBA" rfc="AAAA610917AAA">
  7. <direccion:DomicilioFiscal codigoPostal="12300" localidad="CIUDAD DE MEXICO" noExterior="54" estado="DISTRITO FEDERAL" pais="MEXICO" municipio="MILPA ALTA" colonia="SAN SALVADOR CUAUHTENCO" calle="CEDROS"/>
  8. </direccion:Cliente>
  9. <direccion:Conceptos>
  10. <direccion:Concepto importe="4990.00" valorUnitario="4990.00" cantidad="1" descripcion="BLACKBERRY STORM" unidad="pz" noIdentificacion="BB9550"/>
  11. <direccion:Concepto importe="1300.00" valorUnitario="1300.00" cantidad="1" descripcion="MONITOR 17 PULGADAS" unidad="pz" noIdentificacion="MT17"/>
  12. </direccion:Conceptos>
  13. </direccion:ruta>
  14. XML;

Código PHP:
Ver original
  1. $doc = new DOMDocument();
  2. $doc->loadXML($xml);
  3. $conceptos = $doc->getElementsByTagNameNS($doc->lookupNamespaceUri('direccion'), 'Concepto');
  4.  
  5. echo '<h3>Conceptos</h3>';
  6.  
  7. for ($i=0; $i<$conceptos->length; $i++) {
  8.     foreach ($conceptos->item($i)->attributes as $atributo) {
  9.         echo $atributo->name . ' ' . $atributo->nodeValue . '<br />';
  10.     }
  11.     echo '<hr />';
  12. }

tenías mal definido el namespace

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

definiste el namespace xsi y estás usando el namespace direccion lo cambie en el ejemplo. Espero que ya entiendas mejor el tema. 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
  #7 (permalink)  
Antiguo 21/09/2011, 17:26
Avatar de saseisa  
Fecha de Ingreso: agosto-2006
Mensajes: 329
Antigüedad: 17 años, 8 meses
Puntos: 9
Respuesta: xml y php

ahi como lo muestra es uno tras otro puedo darle formato para que se vean como tabla la informacion de los conceptos??
  #8 (permalink)  
Antiguo 21/09/2011, 17:32
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: xml y php

Cita:
Iniciado por saseisa Ver Mensaje
ahi como lo muestra es uno tras otro puedo darle formato para que se vean como tabla la informacion de los conceptos??
Claro que puedes darle formato con HTML y CSS como quieras. En vez de hacer los saltos de línea generar una tabla etc... Eso ya es otro tema que no va en este foro.

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: 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 22:24.