Pagine

lunedì 20 aprile 2009

Scrivere e leggere file xml con PHP


A volte capita di non avere la necessità di scomodare qualcosa di importante come un vero e proprio database per salvare dei dati sul nostro server web. A volte potrebbe anche capitare di volere semplicemente capire come fare per scrivere e leggere un file .XML usando PHP. Per questo ci sarebbe Google ed i suoi infiniti meandri di risposte ad un problema semplice come questo. Oppure, bastava chiedere, ecco la soluzione più semplice che mi viene in mente.


Scriviamo su un file di testo il seguente codice, salviamolo come ScrivoXML.PHP

<?php

$dom = new DomDocument('1.0');

$database= $dom->appendChild($dom->createElement('database'));

$record = $database->appendChild($dom->createElement('record'));

$colore = $record->appendChild($dom->createElement('colore'));

$giorno = $record->appendChild($dom->createElement('giorno'));

$colore->appendChild($dom->createTextNode('Rosso'));

$giorno->appendChild($dom->createTextNode(date ("lunedì");

$record = $database->appendChild($dom->createElement('record'));

$colore = $record->appendChild($dom->createElement('colore'));

$giorno = $record->appendChild($dom->createElement('giorno'));

$colore->appendChild($dom->createTextNode('verde'));

$giorno->appendChild($dom->createTextNode(date ("martedì");

$dom->formatOutput = true;

$test1 = $dom->saveXML();

$dom->save('miofile.xml');

echo 'Salvataggio effettuato con successo';

?>

Ed ecco che, come per miracolo, se facciamo partire sul nostro server web il nostro file, nella stessa cartella dove risiede scrivoXML .PHP comparirà il file miofile.xml con un codice simile a questo:


<?xml version="1.0"?>

<database>

<record>

<colore>Rosso</colore>

<giorno>Lunedì</giorno>

</record>

<record>

<colore>Verde</colore>

<giorno>Martedì</giorno>

</record>

</database>


A questo punto per leggere il file xml in questione scriveremo un secondo file leggi.PHP con il seguente codice


<?php

echo "<h3>N° record= ".count($xml->record)."</h3>";
$xml = simplexml_load_file('miofile.xml');

foreach($xml->record as $article)

{

echo $article->giorno.'-'.$colore.;



}

?>

Ovviamente possiamo arricchire il risultato del nostro file di lettura con elementi HTML tipo tabelle, elenchi o tag <div>, così come potremmo aggiungere record al nostro file xml.


C.I.P (copia, incolla prova) ciao!

3 commenti:

Anonimo ha detto...

c'è un errore alla riga:
$giorno->appendChild($dom->createTextNode(date ("lunedì");

quella corretta è:
$giorno->appendChild($dom->createTextNode(date ("lunedì")));

cioè mancano 2 parentesi chuise alla fine!

per il resto è ok

Anonimo ha detto...

anche leggi.php è sbagliato, qui quello corretto:


record as $article)
{
echo $article->giorno.' - '.$article->colore.'
';
}
?>

gianni ha detto...

hai ragione, perdonami per la svista e grazie per la correzione.