simplexmlelement leer generate from create crear con como archivos and php xml

leer - ¿Cómo generar archivo XML dinámicamente usando PHP?



simplexml php (6)

Con FluidXML puedes generar tu XML muy fácilmente.

$tracks = fluidxml(''xml''); $tracks->times(8, function ($i) { $this->add([ ''track'' => [ ''path'' => "song{$i}.mp3", ''title'' => "Track {$i} - Track Title" ] ]); });

FluidXML

Tengo que generar un archivo xml dinámicamente en tiempo de ejecución. Por favor, ayúdame a generar el siguiente archivo XML dinámicamente usando PHP.

<?xml version="1.0" encoding="UTF-8"?> <xml> <track> <path>song1.mp3</path> <title>Track 1 - Track Title</title> </track> <track> <path>song2.mp3</path> <title>Track 2 - Track Title</title> </track> <track> <path>song3.mp3</path> <title>Track 3 - Track Title</title> </track> <track> <path>song4.mp3</path> <title>Track 4 - Track Title</title> </track> <track> <path>song5.mp3</path> <title>Track 5 - Track Title</title> </track> <track> <path>song6.mp3</path> <title>Track 6 - Track Title</title> </track> <track> <path>song7.mp3</path> <title>Track 7 - Track Title</title> </track> <track> <path>song8.mp3</path> <title>Track 8 - Track Title</title> </track>


Echa un vistazo al sistema de plantillas Tiny But Strong . Generalmente se usa para crear plantillas de HTML, pero hay una extensión que funciona con archivos XML. Lo uso ampliamente para crear informes en los que puedo tener un archivo de código y dos archivos de plantilla, htm y xml, y el usuario puede elegir si desea enviar un informe a la pantalla o una hoja de cálculo.

Otra ventaja es que no tiene que codificar el xml desde cero, en algunos casos he querido exportar hojas de cálculo complejas de gran tamaño y, en lugar de tener que codificar toda la exportación, todo lo que se requiere es guardar una hoja de cálculo existente en XML y sustituto en las etiquetas de código donde se requiere la salida de datos. Es una forma rápida y muy eficiente de trabajar.


Para crear un documento XML en PHP, debe crear una clase DOMDocument, crear nodos secundarios y agregar estos nodos en la rama correcta del árbol de documentos.

Como referencia puede leer http://it.php.net/manual/en/book.dom.php

Ahora vamos a hacer un recorrido rápido por el siguiente código.

  • en la línea 2 creamos un documento xml vacío (solo especifique la versión xml (1.0) y la codificación (utf8))
  • Ahora necesitamos rellenar el árbol xml:
    • Tenemos que crear un xmlnode (línea 5)
    • Y tenemos que añadir esto en la posición correcta. Estamos creando la raíz, por lo que agregamos esto directamente al documento de dominio.
    • Nota: crear elemento anexar el elemento al nodo y devolver el nodo insertado, guardamos esta referencia para anexar los nodos de la pista al nodo raíz (incidentalmente llamado xml).

Estos son los elementos básicos, puede crear y agregar un nodo en solo una línea (13, por ejemplo), puede hacer muchas otras cosas con el dom api. Es tu decision.

<?php /* create a dom document with encoding utf8 */ $domtree = new DOMDocument(''1.0'', ''UTF-8''); /* create the root element of the xml tree */ $xmlRoot = $domtree->createElement("xml"); /* append it to the document created */ $xmlRoot = $domtree->appendChild($xmlRoot); $currentTrack = $domtree->createElement("track"); $currentTrack = $xmlRoot->appendChild($currentTrack); /* you should enclose the following two lines in a cicle */ $currentTrack->appendChild($domtree->createElement(''path'',''song1.mp3'')); $currentTrack->appendChild($domtree->createElement(''title'',''title of song1.mp3'')); $currentTrack->appendChild($domtree->createElement(''path'',''song2.mp3'')); $currentTrack->appendChild($domtree->createElement(''title'',''title of song2.mp3'')); /* get the xml printed */ echo $domtree->saveXML(); ?>

Edición: solo otra sugerencia: la principal ventaja de usar un xmldocument (el documento dom o el simplexml) en lugar de imprimir el xml, es que el xmltree se puede buscar con la consulta xpath


Una forma fácil de hacer esto es:

<?php // Send the headers header(''Content-type: text/xml''); header(''Pragma: public''); header(''Cache-control: private''); header(''Expires: -1''); echo "<?xml version=/"1.0/" encoding=/"utf-8/"?>"; echo ''<xml>''; // echo some dynamically generated content here /* <track> <path>song_path</path> <title>track_number - track_title</title> </track> */ echo ''</xml>''; ?>

guardalo como .php


Yo usaría SimpleXMLElement .

<?php $xml = new SimpleXMLElement(''<xml/>''); for ($i = 1; $i <= 8; ++$i) { $track = $xml->addChild(''track''); $track->addChild(''path'', "song$i.mp3"); $track->addChild(''title'', "Track $i - Track Title"); } Header(''Content-type: text/xml''); print($xml->asXML());


$query=mysql_query("select * from tablename")or die(mysql_error()); $xml="<libraray>/n/t/t"; while($data=mysql_fetch_array($query)) { $xml .="<mail_address>/n/t/t"; $xml .= "<id>".$data[''id'']."</id>/n/t/t"; $xml .= "<email>".$data[''email_address'']."</email>/n/t/t"; $xml .= "<verify_code>".$data[''verify'']."</verify_code>/n/t/t"; $xml .= "<status>".$data[''status'']."</status>/n/t/t"; $xml.="</mail_address>/n/t"; } $xml.="</libraray>/n/r"; $xmlobj=new SimpleXMLElement($xml); $xmlobj->asXML("text.xml");

Simplemente, conéctese con su base de datos, creará un archivo test.xml en su carpeta de proyectos.