Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/10/2011, 11:29
Avatar de andresdzphp
andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 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