Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Duda SimpleXML (http://www.forosdelweb.com/f68/duda-simplexml-559577/)

Valentinoo 22/02/2008 12:12

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

GatorV 22/02/2008 13:17

Re: Duda SimpleXML
 
Segun el manual de SimpleXML, puedes hacer esto:
Código PHP:

echo $xml->{'ns:book'}->{'ns:title'}; 

Saludos.

Valentinoo 22/02/2008 13:29

Re: Duda SimpleXML
 
Muchas Gracias por contestar.

He probado tu codigo y no me funciona. Puede que SimpleXML no sepa interpretar los namespace

GatorV 22/02/2008 13:43

Re: Duda SimpleXML
 
Mmm leyendo mas a fondo prueba esto:
Código PHP:

$book $xml->children"book" );
$title $book->children"title" );
echo 
$title

Saludos.

Valentinoo 22/02/2008 14:44

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;

GatorV 22/02/2008 15:22

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

Saludos.

Valentinoo 22/02/2008 15:29

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) { }

GatorV 22/02/2008 15:32

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

Saludos.

Valentinoo 22/02/2008 15:58

Re: Duda SimpleXML
 
Al hacer el var_dump($book) el resultado es:

object(SimpleXMLElement)#2 (0) { }

GatorV 22/02/2008 16:27

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.

Valentinoo 22/02/2008 17:21

Re: Duda SimpleXML
 
Impresionante. Es lo que necesitaba.

Muchisimas Gracias,

Valentinoo

tuadmin 25/03/2008 21:00

Re: Duda SimpleXML
 
Cita:

Iniciado por GatorV (Mensaje 2296096)
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


La zona horaria es GMT -6. Ahora son las 07:28.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.