Como percorrer un XML
PHP Maio 25th, 2009Facendo uso da clase SimpleXML (http://es.php.net/manual/es/book.simplexml.php) pódese percorrer de forma sinxela un XML. Para isto temos que crear un obxeto da clase SimpleXMLElement, inicializándoo ben cun String que conteña o XML (new SimpleXMLElement(string) ) ou ben co nome do ficheiro que conteña o XML ( new SimpleXMLElement(ficheiro,NULL,True) ). Tamén dispoñemos de dúas funcións que obteñen o mesmo obxeto (simplexml_load_string(string) e simplexml_load_file(ficheiroXML)).
Unha vez obtido o obxeto SimpleXMLElement, podemos acceder o nome de cada nodo, os seus atributos e os seus sobnodos cos métodos do obxeto:
Se temos o seguinte XML:
<?xml version="1.0" ?> <libraria> <libro isbn="0345342968"> <titulo>Fahrenheit 451</titulo> <autor>R. Brandbury</autor> <editor>Del Rey</editor> </libro> <libro isbn="0048231398"> <titulo>The Silmarillion</titulo> <autor>J.R.R. Tolkien</autor> <editor>G. Allen and Unwin</editor> </libro> <libro isbn="0451524934"> <titulo>1984</titulo> <autor>G. Orwell</autor> <editor>Signet</editor> </libro> <libro isbn="031219126X"> <titulo>Frankenstein</titulo> <autor>M. Shelley</autor> <editor>Bedford</editor> </libro> <libro isbn="0312863551"> <titulo>The Moon Is a Harsh Mistress</titulo> <autor>R. A. Heinlein</autor> <editor>Orb</editor> </libro> </libraria>
Podemos percorrelo facendo uso dos obxetos e métodos vistos anteriormente:
$libraria = new SimpleXMLElement('ficheiro.xml',NULL,true);
procesar_Nodo($libraria);
function procesar_Nodo($nodo) {
echo "<b>NODO :</b>".$nodo->getName() . "<br />";
// SE TEN ATRIBUTOS
if (count($nodo->attributes()) > 0) {
echo "<b>atributos :</b><br />";
foreach ($nodo->attributes() as $atributo) {
echo " --<b>".$atributo->getName() ."</b>: ". $atributo . "<br />";
}
}
// SE NON TEN FILLOS IMPRIMESE O CONTIDO
if (count($nodo->children()) == 0) {
echo $nodo . "<br />";
}
foreach($nodo->children() as $subnodo) {
procesar_Nodo($subnodo);
}
}
Leave a Reply
You must be logged in to post a comment.