Como lo prometido es deuda, de hoy en adelante actualizaré mas a menudo el blog, y para ello comenzaré con una entrada que había dejado algo pendiente. Hace poco explicaba como leer archivos XML en PHP, sin embargo nunca explique como guardarlos (crearlos), para ello solo hace falta unas líneas de código.
Asumiendo que sabemos la estructura básica de un XML, tomaré como referencia el ejemplo anterior, lo primero es declarar el XML:
Asumiendo que sabemos la estructura básica de un XML, tomaré como referencia el ejemplo anterior, lo primero es declarar el XML:
$xml = new DomDocument('1.0', 'UTF-8');Podemos utilizar otras codificaciones, pero a modo de ejemplo seguiremos con utf-8. Luego de esto creamos el nodo principal o raíz:
$raiz = $xml->createElement('raiz'); $raiz = $xml->appendChild($raiz);Ahora solo nos queda rellenar dicho nodo con los sub-nodos consecuentes:
$nodo = $xml->createElement('libro'); $nodo = $raiz->appendChild($nodo);Como vemos, la forma de agregar nodos es básica y aplica para sub-nodos, por ejemplo:
$subnodo = $xml->createElement('item','texto dentro del item'); $subnodo = $nodo->appendChild($subnodo);Una vez hecho esto nuestro código esta listo, solo falta volcarlo a un archivo físico:
$xml->formatOutput = true; $xml->saveXML(); $xml->save('ruta/archivo.xml');Aunque en esta parte podemos variar un poco, si queremos mostrar el XML tal cual como fue creado solo hace falta guardar la salida en una variable y utilizar la función htmlentities ($ xml ):
$el_xml = $xml->saveXML(); echo htmlentities($el_xml);Y si queremos no solo guardarlo, sino mostrarlo una vez finalice el proceso, podemos combinar ambas cosas y tener algo como esto:
<?php crear(); //Creamos el archivo leer(); //Luego lo leemos //Para crear el archivo function crear(){ $xml = new DomDocument('1.0', 'UTF-8'); $biblioteca = $xml->createElement('biblioteca'); $biblioteca = $xml->appendChild($biblioteca); $libro = $xml->createElement('libro'); $libro = $biblioteca->appendChild($libro); // Agregar un atributo al libro $libro->setAttribute('seccion', 'favoritos'); $autor = $xml->createElement('autor','Paulo Coelho'); $autor = $libro->appendChild($autor); $titulo = $xml->createElement('titulo','El Alquimista'); $titulo = $libro->appendChild($titulo); $anio = $xml->createElement('anio','1988'); $anio = $libro->appendChild($anio); $editorial = $xml->createElement('editorial','Maxico D.F. - Editorial Grijalbo'); $editorial = $libro->appendChild($editorial); $xml->formatOutput = true; $el_xml = $xml->saveXML(); $xml->save('libros.xml'); //Mostramos el XML puro echo "<p><b>El XML ha sido creado.... Mostrando en texto plano:</b></p>". htmlentities($el_xml)."<br/><hr>"; } //Para leerlo function leer(){ echo "<p><b>Ahora mostrandolo con estilo</b></p>"; $xml = simplexml_load_file('libros.xml'); $salida =""; foreach($xml->libro as $item){ $salida .= "<b>Autor:</b> " . $item->autor . "<br/>". "<b>Título:</b> " . $item->titulo . "<br/>". "<b>Ano:</b> " . $item->anio . "<br/>". "<b>Editorial:</b> " . $item->editorial . "<br/><hr/>"; } echo $salida; } ?>
Recibe notificaciones por correo
11 Comentarios
Escribir ComentarioExcelente información. Me serviría mucho para un sistema de ventas :) Gracias
ResponderMuchas gracias por la información
Respondercon jquery no podría hacerse en vez de DOM?
ResponderSi, pudieras leerlo con jQuery sin problemas, es solo un ejemplo utilizando PHP.
ResponderBuen aporte, pero como seria de ponerle atributos a las etiquetas ejemplo e probado con esto $xml->writeAttribute('version', '1.0'); pero me da error.
ResponderSiguiendo con el ejemplo coloca justo después de agregar el libro a la biblioteca (append) lo siguiente: $libro->setAttribute('seccion', 'favoritos');... Igual ya he modificado el post, gracias por el comentario!
ResponderMe ha servido el codigo tal cual esta. Gracias por el aporte
Respondergracias buen tutorial
Responderel atributo standalone="no" de xml como lo puedo ingresar ?
ResponderDebido a que es una propiedad lo puedes setear de la siguiente forma:
Responder$xml->xmlStandalone = false;
Muchas Gracias por tan excelente articulo que ha compartido sobre creacion y lectura de xml, felicitandole por su aporte para los que estamos aprendiendo a programar, de esta manera talves en una proxima oportunidad nos pudiera ayudar con temas de facturacion electronica en php....gracias y saludos
ResponderLamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.
Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión