Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Duda SimpleXML

Estas en el tema de Duda SimpleXML en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas Tardes, Les pido ayuda con el siguiente xml <ns:book xmlns:ns="http://quickstart.samples/xsd"> <ns:title>Titulo</ns:title> </ns:book> Mi pregunta es: ¿Como puedo sacar el Titulo con SimpleXML? He intentado ...
  #1 (permalink)  
Antiguo 22/02/2008, 12:12
 
Fecha de Ingreso: abril-2007
Mensajes: 40
Antigüedad: 17 años, 7 meses
Puntos: 0
Duda SimpleXML

Buenas Tardes,

Les pido ayuda con el siguiente xml

<ns:book xmlns:ns="http://quickstart.samples/xsd">
<ns:title>Titulo</ns:title>
</ns:book>

Mi pregunta es: ¿Como puedo sacar el Titulo con SimpleXML?

He intentado con el siguiente código y nada:
$xml = simplexml_load_file('prueba.xml');

echo $xml->title

Gracias,

Valentinoo
  #2 (permalink)  
Antiguo 22/02/2008, 13:17
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
Re: Duda SimpleXML

Segun el manual de SimpleXML, puedes hacer esto:
Código PHP:
echo $xml->{'ns:book'}->{'ns:title'}; 
Saludos.
  #3 (permalink)  
Antiguo 22/02/2008, 13:29
 
Fecha de Ingreso: abril-2007
Mensajes: 40
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Duda SimpleXML

Muchas Gracias por contestar.

He probado tu codigo y no me funciona. Puede que SimpleXML no sepa interpretar los namespace
  #4 (permalink)  
Antiguo 22/02/2008, 13:43
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
Re: Duda SimpleXML

Mmm leyendo mas a fondo prueba esto:
Código PHP:
$book $xml->children"book" );
$title $book->children"title" );
echo 
$title
Saludos.
  #5 (permalink)  
Antiguo 22/02/2008, 14:44
 
Fecha de Ingreso: abril-2007
Mensajes: 40
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Duda SimpleXML

Sigue sin funcionar. El error que me da es el siguiente:

Warning: main() [function.main]: Node no longer exists in C:\wamp\www\simple_xml.php on line

La linea 12 es donde tengo echo $title;
  #6 (permalink)  
Antiguo 22/02/2008, 15:22
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
Re: Duda SimpleXML

Prueba usar var_dump( $title ); a ver que metodos tiene el nodo.

Saludos.
  #7 (permalink)  
Antiguo 22/02/2008, 15:29
 
Fecha de Ingreso: abril-2007
Mensajes: 40
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Duda SimpleXML

Al hace el var_dump me devuelve lo siguiente:

Warning: var_dump() [function.var-dump]: Node no longer exists in C:\wamp\www\simple_xml.php on line 13
object(SimpleXMLElement)#3 (0) { }
  #8 (permalink)  
Antiguo 22/02/2008, 15:32
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
Re: Duda SimpleXML

Mmm prueba hacer un var_dump a $book a ver si te devuelve el dato correcto.

Saludos.
  #9 (permalink)  
Antiguo 22/02/2008, 15:58
 
Fecha de Ingreso: abril-2007
Mensajes: 40
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Duda SimpleXML

Al hacer el var_dump($book) el resultado es:

object(SimpleXMLElement)#2 (0) { }
  #10 (permalink)  
Antiguo 22/02/2008, 16:27
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
Re: Duda SimpleXML

Edito:

Con este código me deja accesar al titulo:
Código PHP:
<?php

$xml 
"<?xml version='1.0'?>
<root>
<ns:book xmlns:ns=\"http://quickstart.samples/xsd\">
<ns:title>Titulo</ns:title>
</ns:book>
<title>titlea</title>
</root>"
;

$xml simplexml_load_string$xml );
$ns $xml->getNamespacestrue );
$xml->registerXPathNamespace('c'$ns['ns']);
$title $xml->xpath('//c:title');
echo 
$title[0];
?>
Saludos.

Última edición por GatorV; 22/02/2008 a las 16:34
  #11 (permalink)  
Antiguo 22/02/2008, 17:21
 
Fecha de Ingreso: abril-2007
Mensajes: 40
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Duda SimpleXML

Impresionante. Es lo que necesitaba.

Muchisimas Gracias,

Valentinoo
  #12 (permalink)  
Antiguo 25/03/2008, 21:00
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años, 6 meses
Puntos: 120
Re: Duda SimpleXML

Cita:
Iniciado por GatorV Ver Mensaje
Mmm leyendo mas a fondo prueba esto:
Código PHP:
$book $xml->children"book" );
$title $book->children"title" );
echo 
$title
Saludos.
eso esta ams o menos bien pero en la funcion children tienes que poner lo que esta en el ns de su xml xmlns:ns="http://quickstart.samples/xsd"

osea segun lo que lei y vaya que lei bastatnte sobre xml y de se los recomiendo es que el namespaces es un identificador
<ns:book xmlns:ns=\"http://quickstart.samples/xsd\">
donde esta con engro le indicas que el identificador de ns es igual a "http://quickstart.samples/xsd" puede contener cualquier nombre no necesariamente un sitio web peude contener tu nombre o como yo lo estoy haciendo una descripcion de esa parte

ahora en php para reconocer ese identificador necesariamente se utiliza children por no se que ams utilizar

el codigo quedaria en el siguiente modo
<?php

$xml = "<?xml version='1.0'?>
<root>
<ns:book xmlns:ns="http://quickstart.samples/xsd">
<ns:title>Titulo</ns:title>
</ns:book>
<title>titlea</title>
</root>";

$xml = simplexml_load_string( $xml );
$xml_book = $xml->children('http://quickstart.samples/xsd');
echo $xml_book->title;

?>

eso seria la solucion para los que bscuan leer los xml que estan estructurados de esa manera


bye espero les aya servido
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 01:17.