Leggere file Xml con SimpleXml e Php
L'xml come molti di voi ben sanno è un linguaggio di Markup molto flessibile, il quale permette di creare strutture personali in modo da gestire i propri dati creando schemi originali.
In questo tutorial spieghiamo come è possibile leggere un file Xml tramite SimpleXml (Solitamente integrato in Php installato sui nostri WebServer).
Per prima cosa vediamo come è formato un file xml d'esempio
<?xml version="1.0" encoding="utf-8"?> <articoli> <articolo id="1"> <titolo>Leggere file Xml con SimpleXml e Php</titolo> <autore>C.Palladino</autore> </articolo> <articolo id="2"> <titolo>W&T Sulla luna</titolo> <autore>C.Fera</autore> </articolo> <articolo id="3"> <titolo>W&T SU Marte</titolo> <autore>Staff</autore> </articolo> </articoli>
Come è possibile vedere il file sarà formato da un Tag contenitore che in questo caso è "articoli" e da altri sottotag contenitori che al loro interno contengono i tad dei dati che in questo caso sarà "articolo".
Quindi articolo avrà l'attributo id, il tag titolo dove metteremo il titolo del nostro articolo e il tag autore dove ovviamente inseriremo il nome dell'autore per quell'articolo.
N.B. I tag devono essere sempre chiusi altrimenti la struttura del file è scorretta.
Adesso passiamo alla lettura vera e propria del nostro file:
1. <?php
2. $xml = simplexml_load_file('articloli.xml');
3.
4. echo "<h3>Articoli salvati nel file articloli.xml (".count($xml->article).")</h3>";
5. echo "<ul>";
6. foreach($xml->article as $article)
7. {
8. echo '<li><a href="showarticle.php?id='.$article['id'].'">'.$article->title.'</a>
<em>(di '.$article->author.')</em></li>';
9. }
10. echo "</ul>";
11. ?>
Cosa abbiamo fatto?
- Alla riga 3 abbiamo caricato il file articoli.xml tramite la funzione load di SimpleXml la quale ci fornisce un array
- Alla riga 5 tramite la funzione count abbiamo potuto dire quanti articoli ci sono nel nostro file
- Dalla 7 alla 10 tramite il ciclo foreach abbiamo stampato tutti gli articoli con i relativi attributi.
Per qualsiasi info o dubbio non esitate a contattarmi.