Leer y escribir XML con PHP 5.x
Junio 12, 2008
Leer archivos XML con PHP 5.x
Pensemos que queremos leer el siguiente XML:
<books><book><author>Jack Herrington</author><title>PHP Hacks</title><publisher>O'Reilly</publisher></book><book><author>Jack Herrington</author><title>Podcasting Hacks</title><publisher>O'Reilly</publisher></book></books>
En PHP usariamos el siguiente c贸digo para leer el XML:
<?php/*Instancio la clase DOMque nos permitira operar con el XML*/$doc = new DOMDocument();/*Cargo el XML,En este caso es un archivo llamado books.xml,podriamos usar loadXML si desamos leer de un string*/$doc->load( 'books.xml' );/*Obtengo el nodo book del XMLa traves del metodo getElementsByTagName,este nos entregara una lista de todos losnodos encontrados */$books = $doc->getElementsByTagName( "book" );/*Al ser $books una lista de nodoslo puedo recorrer y obtener todosu contenido*/foreach( $books as $book ){$authors = $book->getElementsByTagName( "author" );/*Obtengo el valor del primer elemento 'item(0)'de la lista $autors.Si existiera un atriburto en el nodo para obtenerlousaria $authors->getAttribute('atributo');*/$author = $authors->item(0)->nodeValue;$publishers = $book->getElementsByTagName( "publisher" );$publisher = $publishers->item(0)->nodeValue;$titles = $book->getElementsByTagName( "title" );$title = $titles->item(0)->nodeValue;echo "$title - $author - $publisher\n";}?>
Ahora para escribir el mismo archivo podemos usar:
<?php/*Formo un arregloque contien los datos a escribir*/$books = array();$books [] = array('title' => 'PHP Hacks','author' => 'Jack Herrington','publisher' => "O'Reilly");$books [] = array('title' => 'Podcasting Hacks','author' => 'Jack Herrington','publisher' => "O'Reilly");$doc = new DOMDocument();/*Especifico que el resultado tengaformato que incluye tabulacionesy espacios*/$doc->formatOutput = true;/*Creo el nodo 'books'*/$r = $doc->createElement( "books" );/*A馻do el nodo 'books'al documento*/$doc->appendChild( $r );foreach( $books as $book ){$b = $doc->createElement( "book" );$author = $doc->createElement( "author" );$author->appendChild($doc->createTextNode( $book['author'] ));$b->appendChild( $author );$title = $doc->createElement( "title" );$title->appendChild($doc->createTextNode( $book['title'] ));$b->appendChild( $title );$publisher = $doc->createElement( "publisher" );$publisher->appendChild($doc->createTextNode( $book['publisher'] ));$b->appendChild( $publisher );$r->appendChild( $b );}/*Guardo el documento y la imprimo,si deseo guardar en un archivo usuaria$doc->save('path/to/archive');*/echo $doc->saveXML();?>
Estos ejemplos muestran lo elemental de la extension DOM, existen muchos metodos y clases mas, que nos pueden ser 煤tiles, podemos consultar su documentacion en PHP: DOM Manual
Entrada almacenada bajo: Libre, PHP
Este post ha sido visto 708 veces
Suscribirse por mail
1 Comentario Añade tu comentario
1. Martin Sagastume | Agosto 12, 2008 at 12:00 pm
Excelente!!!!!!!!!!!!!! esto estaba buscandoooo
gracias !
Envia comentario
Algunas etiquetas HTML estan permitidas:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>
Conectate a este comentario | Suscribete a los comentarios via RSS Feed