Purtroppo per questioni di infrastuttura tecnica non sto lavorando da molto su ambiente PHP5 ma ogni volta trovo qualcosina in più che mi rende le cose più facili, tra le ultime la lettura dei file xml.
Infatti dalla versione 5 è stata introdotta nel php la libreria SimpleXML che offrendo un’interfaccia ad oggetti rende il lavoro di lettura veramente semplice.

Supponiamo di leggere il file anagrafica.xml riportato di seguito:

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0"?>
<anagrafica>
<record>
<NOME><![CDATA[Mario]]></NOME>
<COGNOME><![CDATA[Bianchi]]></COGNOME>
</record>
<record>
<NOME><![CDATA[Paolo]]></NOME>
<COGNOME><![CDATA[Rossi]]></COGNOME>
</record>
</anagrafica>

Con poche righe di codice si ha accesso ai dati.

1
2
3
4
5
6
7
8
9
<?php
$doc = simplexml_load_file("anagrafica.xml");
$anagrafica = $doc->record;
foreach($anagrafica as $dati){
    echo "Nome: ".$dati->NOME."<br>\n";
    echo "Cognome: ".$dati->COGNOME."<br>\n";
    echo "<hr>\n";
}
?>

Come si vede la struttura ad oggetti è molto semplice, facilita molto il lavoro ed il codice risulta molto pulito.

Ecco qui di seguito una piccola funzione che vi permettarà di leggere in maniera veloce il contenuto dei file xml. Questo script restituisce un array contenente i dati del file xml, sarà vostra cura elaborare questo array adattandolo ai vostri utilizzi.

<?php
function readXml($file){
    $xml_parser = xml_parser_create();
    if(!($fp = fopen($file, "r"))){ die("Impossibile aprire il file Xml"); }
    $data = fread($fp, filesize($file)+1);
    fclose($fp);
    xml_parse_into_struct($xml_parser, $data, $vals, $index);
    xml_parser_free($xml_parser);
    return $vals;
}
?>