2010-01-10 11 views
27

Necesito crear un nuevo archivo XML y escribirlo en mi servidor. Por lo tanto, estoy buscando la mejor manera de crear un nuevo archivo XML, escribir algunos nodos base y guardarlo. Luego ábralo de nuevo y escriba más datos.¿Crear nuevo archivo XML y escribir datos en él?

He estado usando file_put_contents() para guardar el archivo. Pero, para crear uno nuevo y escribir algunos nodos base, no estoy seguro del mejor método.

Ideas?

Respuesta

58

DOMDocument es una gran opción. Es un módulo diseñado específicamente para crear y manipular documentos XML. Puede crear un documento desde cero o abrir documentos existentes (o cadenas) y navegar y modificar sus estructuras.

$xml = new DOMDocument(); 
$xml_album = $xml->createElement("Album"); 
$xml_track = $xml->createElement("Track"); 
$xml_album->appendChild($xml_track); 
$xml->appendChild($xml_album); 

$xml->save("/tmp/test.xml"); 

Para volver a abrir y escribir:

$xml = new DOMDocument(); 
$xml->load('/tmp/test.xml'); 
$nodes = $xml->getElementsByTagName('Album') ; 
if ($nodes->length > 0) { 
    //insert some stuff using appendChild() 
} 

//re-save 
$xml->save("/tmp/test.xml"); 
+0

¿Cómo mantengo la estructura XML en mi documento, en lugar de todo lo que se escribe en una línea? –

+4

Establezca la propiedad "formatOutput" en el objeto DOMDocument: '$ xml-> formatOutput = true'. http://ca.php.net/manual/en/class.domdocument.php#domdocument.props.formatoutput – zombat

+0

es un poco tarde pero si alguien quiere leer un tutorial puede encontrarlo aquí. https://programmerblog.net/how-to-generate-xml-files-using-php/ –

13

PHP tiene varias bibliotecas para XML Manipulation.

El enfoque Document Object Model (DOM) (que es un estándar W3C y debe ser familiar si lo ha utilizado en otros entornos, como un navegador web o Java, etc.). Le permite crear documentos de la siguiente manera

<?php 
    $doc = new DOMDocument(); 
    $ele = $doc->createElement('Root'); 
    $ele->nodeValue = 'Hello XML World'; 
    $doc->appendChild($ele); 
    $doc->save('MyXmlFile.xml'); 
?> 

Incluso si no han llegado a través del DOM antes, vale la pena invertir algo de tiempo en ella como el modelo se utiliza en muchos idiomas/ambientes.

2

Con FluidXML puede generar y almacenar un documento XML muy fácilmente.

$doc = fluidxml(); 

$doc->add('Album', true) 
     ->add('Track', 'Track Title'); 

$doc->save('album.xml'); 

Cargar un documento desde un archivo es igualmente simple.

$doc = fluidify('album.xml'); 

$doc->query('//Track') 
     ->attr('id', 123); 

https://github.com/servo-php/fluidxml

Cuestiones relacionadas