Foros del Web » Programando para Internet » PHP »

Leer un campo atributo con simpleXML

Estas en el tema de Leer un campo atributo con simpleXML en el foro de PHP en Foros del Web. Hola, llevo un rato intentando conseguir leer el contenido de un campo de xml con un atributo concreto. Estoy usando ele jemplo de php.net Código: ...
  #1 (permalink)  
Antiguo 03/05/2012, 04:06
 
Fecha de Ingreso: noviembre-2011
Mensajes: 20
Antigüedad: 10 años, 6 meses
Puntos: 0
Leer un campo atributo con simpleXML

Hola, llevo un rato intentando conseguir leer el contenido de un campo de xml con un atributo concreto. Estoy usando ele jemplo de php.net
Código:
<?xml version='1.0' standalone='yes'?>
<peliculas>
 <pelicula>
  <titulo>PHP: Tras el Parser</titulo>
  <personajes>
   <personaje>
    <nombre>Srta. Programadora</nombre>
    <actor>Onlivia Actora</actor>
   </personaje>
   <personaje>
    <nombre>Sr. Programador</nombre>
    <actor>El Actor</actor>
   </personaje>
  </personajes>
  <argumento>
   Así que, este lenguaje. Es como, un lenguaje de programación. ¿O es un
   lenguaje interpretado? Lo descubrirás en esta intrigante y temible parodia
   de un documental.
  </argumento>
  <grandes-lineas>
   <linea>PHP soluciona todos los problemas web</linea>
  </grandes-lineas>
  <puntuacion tipo="pulgares">7</puntuacion>
  <puntuacion tipo="estrellas">5</puntuacion>
 </pelicula>
</peliculas>

La idea es, si yo quiero, por ejemplo que me devuelva el campo puntuacion tipo estrellas, osea, mostrar por pantalla, o usar el '5'
Estoy intentando hacerlo así:

Código:
$peliculas = new SimpleXMLElement($xml);
foreach ($peliculas->pelicula->puntuacion as $peli){
echo ($peli['tipo']=='estrellas');
Pero así solo me devuelve un 1, llevo un rato dándole vueltas y pienso que será algo muy tonto; pero como no llevo mucho en esto, no sé sacarlo.
Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 03/05/2012, 08:17
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 10 años, 6 meses
Puntos: 160
Respuesta: Leer un campo atributo con simpleXML

Al hacer un echo de esto

Código PHP:
Ver original
  1. echo ($peli['tipo']=='estrellas');

Te va a devolver el resultado logico de la operacion ya que estas evaluando si $peli['tipo'] es igual a "estrellas" y estas imprimiendo el resultado logico de eso, es por eso que te devuelve un 1 que equivale a TRUE, ya que 0 = FALSE todo lo demas TRUE

Lo que deberias hacer es lo siguiente:

Código PHP:
Ver original
  1. $peliculas = new SimpleXMLElement($xml);
  2. foreach ($peliculas->pelicula->puntuacion as $peli){
  3.     if ($peli['tipo'] == "estrellas") {
  4.         echo $peli[0];
  5.     }      
  6. }
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 04/05/2012, 03:48
 
Fecha de Ingreso: noviembre-2011
Mensajes: 20
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Leer un campo atributo con simpleXML

Muchas gracias, es justo lo que buscaba.
  #4 (permalink)  
Antiguo 04/05/2012, 07:33
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 10 años, 6 meses
Puntos: 160
Respuesta: Leer un campo atributo con simpleXML

Cita:
Iniciado por alehuelva Ver Mensaje
Muchas gracias, es justo lo que buscaba.
De nada campeon
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: simplexml, atributos, campos
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 00:43.