Foros del Web » Programando para Internet » PHP »

como saber el nombre de etiquetas xml con php?

Estas en el tema de como saber el nombre de etiquetas xml con php? en el foro de PHP en Foros del Web. Hola a todos, he buscado en Internet la manera de mostrar los nombres de las etiquetas de un documento xml pero aun no consigo hacerlo.. ...
  #1 (permalink)  
Antiguo 07/10/2011, 08:13
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 6 meses
Puntos: 27
como saber el nombre de etiquetas xml con php?

Hola a todos, he buscado en Internet la manera de mostrar los nombres de las etiquetas de un documento xml pero aun no consigo hacerlo..
La escructura de mi documento xml es la siguiente:

Código XML:
Ver original
  1. <?xml version="1.0"?>
  2. <deshc>
  3. <query historia="OBS001" medico="1110490997" area="1701">
  4. <OBSERV>CAMPO OBSERVACION</OBSERV>
  5. <PARACLINICO>INGREO DE PARACLINICOS</PARACLINICO>
  6. </query>
  7. </deshc>

Y yo necesito mostrar los nombres de las etiquetas que estan entre <query> y
</query> , que para este caso seria OBSERV y PARACLINICO

En el manual de php encontre que con
DomNode->node_name lo puedo hacer....pero la verdad no encontre un ejemplo...

http://php.net/manual/es/function.domnode-node-name.php

Encontre tambien que con DOMElement::getElementsByTagName, puedo saber esos nombres pero tampoco tengo un ejemplo claro....

http://www.php.net/manual/es/domelem...sbytagname.php

Alguien sabe como se usa alguna de esas funciones?..o de que otra manera podria obtener el nombre de las etiquetas de un documento xml ?

Agradezco me puedan colaborar, muchas graciass.....
  #2 (permalink)  
Antiguo 07/10/2011, 08:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: como saber el nombre de etiquetas xml con php?

Lee lo siguiente: http://www.forosdelweb.com/f18/aport...ml-dom-792348/
  #3 (permalink)  
Antiguo 07/10/2011, 10:26
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 6 meses
Puntos: 27
Respuesta: como saber el nombre de etiquetas xml con php?

Muchas gracias por el enlace...
  #4 (permalink)  
Antiguo 07/10/2011, 11:29
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: como saber el nombre de etiquetas xml con php?

Que tal amigo, un mini ejemplo para que te des una idea:

El contenido de tu XML

Código PHP:
Ver original
  1. $xml = '<?xml version="1.0"?>
  2. <deshc>
  3. <query historia="OBS001" medico="1110490997" area="1701">
  4. <OBSERV>CAMPO OBSERVACION</OBSERV>
  5. <PARACLINICO>INGREO DE PARACLINICOS</PARACLINICO>
  6. </query>
  7. </deshc>';

Un ejemplo básico usando DOMDocument (Se puede hacer más dinámicamente y también recursivo pero por este ejemplo manualmente)

Código PHP:
Ver original
  1. $doc = new DOMDocument();
  2.  
  3. //Primero que todo hay que cargar el XML
  4. $doc->loadXML($xml);
  5.  
  6. //Obtenemos a query
  7. $query = $doc->getElementsByTagName('query')->item(0);
  8. //Le decimos a query que queremos sus atributos
  9. $query_att = $query->attributes;
  10.  
  11. //Obtenemos cada atributo deseado por su nombre
  12. $historia = $query_att->getNamedItem('historia');
  13. $medico = $query_att->getNamedItem('medico');
  14. $area = $query_att->getNamedItem('area');
  15.  
  16. //Imprimimos el nombre de atributo y el valor del atributo
  17. echo $historia->nodeName . ': ' . $historia->nodeValue . '<br />';
  18. echo $medico->nodeName . ': ' . $medico->nodeValue . '<br />';
  19. echo $area->nodeName . ': ' . $area->nodeValue . '<br />';
  20.  
  21. //Obtenemos cada etiqueta hijo de query manualmente
  22. $observ = $query->getElementsByTagName('OBSERV')->item(0);
  23. $paraclinico = $query->getElementsByTagName('PARACLINICO')->item(0);
  24.  
  25. //Imprimos el nombre de etiqueta y el valor de la etiqueta
  26. echo $observ->nodeName . ': ' . $observ->nodeValue . '<br />';
  27. echo $paraclinico->nodeName . ': ' . $paraclinico->nodeValue;

Ahora un ejemplo con SimpleXMLElement sin dar tanto recorrido:

Código PHP:
Ver original
  1. $sxm = new SimpleXMLElement($xml); //Aqui cargamos el XML
  2.  
  3. //Imprimimos todos los atributos de query
  4. foreach ($sxm->query[0]->attributes() as $c => $v) {
  5.     echo "$c: $v <br />";
  6. }
  7.  
  8. //Imprimimos todos los hijos de query
  9. foreach ($sxm->query->children() as $qcc => $qcv) {
  10.     echo "$qcc: $qcv <br />";
  11. }

El resultado de ambos es:

Cita:
historia: OBS001
medico: 1110490997
area: 1701
OBSERV: CAMPO OBSERVACION
PARACLINICO: INGREO DE PARACLINICOS
Espero que te sirva. 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
  #5 (permalink)  
Antiguo 07/10/2011, 13:27
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 6 meses
Puntos: 27
Respuesta: como saber el nombre de etiquetas xml con php?

Gracias el ejemplo esta bien claro, al igual que en el aporte del enlace......muchas gracias....

Etiquetas: etiquetas, nombre, xml
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 12:05.