di: Gabriele Farina 29 Giugno 2006
Le librerie che possiamo considerare standard che permettono l'accesso in lettura, modifica ed eventualmente interrogazione di file XML sono fondamentalmente DOM e SAX. PHP fornisce un'implementazione di entrambe le librerie, anche se a partire dalla versione 5 espone un sistema molto più semplice e diretto per accedere ai file XML: la libreria SimpleXML abilitata di default all'interno del motore PHP.
La libreria in questione ha il grosso vantaggio di avere un'interfaccia ad oggetti molto semplice ed intuitiva, che, a differenza del più prolisso DOM, richiede pochissime righe di codice per accedere agli elementi interessati e mantiene intatta la struttura del file XML anche nella sua rappresentazione interna (a differenza di SAX che ci obbliga a tener traccia manualmente delle gerarchie durante la gestione degli eventi generati). In aggiunta espone una funzione, che vedremo alla fine dell'articolo, che permette di eseguire query XPath sull'oggetto per recuperare nodi specifici.
Il primo esempio che andrò ad illustrare si propone di leggere un file XML e restituire in output il valore di alcuni attributi ed il contenuto di alcuni elementi testuali. Il file XML d'esempio sarà il seguente:
<?xml version="1.0" encoding="utf-8"?>
<articles>
<article id="1">
<title>Articolo numero
1</title>
<author>Gabriele
Farina</author>
</article>
<article id="2">
<title>Articolo numero
2</title>
<author>Gabriele
Farina</author>
</article>
<article id="3">
<title>Articolo numero
3</title>
<author>Francesco
Caccavella</author>
</article>
</articles>
Poniamoci come obiettivo quello di estrarre un elenco di tutti gli articoli:
<?php
$xml = simplexml_load_file('articles.xml');
echo "<h3>Articoli salvati nel file articles.xml
(".count($xml->article).")</h3>";
echo "<ul>";
foreach($xml->article as $article)
{
echo '<li><a
href="showarticle.php?id='.$article['id'].'">'.$article->title.'</a>
<em>(di '.$article->author.')</em></li>';
}
echo "</ul>";
?>
Eseguendo lo script otteniamo un output corretto estratto con facilità dal
file XML. Utilizzando la funzione simplexml_load_file
(segnata in rosso nel codice) carichiamo all'interno di un oggetto
SimpleXML il contenuto di un file passato come argomento (in verde nel
codice). l'argomento può essere sia un file che risiede sulla macchina
locale come un file che risiede in remoto su un altro server. L'oggetto
restituito rappresenta la root del nostro documento XML: espone una
proprietà per ogni nodo figlio che può essere un array (nel caso ci
siano più figli omonimi) o un elemento singolo e permette di accedere
agli attributi utilizzando la sintassi che normalmente viene utilizzata
per accedere ad elementi specifici di un array.
In questo modo l'iterazione è veramente semplice: per ottenere lo stesso risultato usando DOM o SAX avremmo dovuto operare con script più intricati o più lunghi da scrivere. Tutta questa semplicità va a discapito di un po' di funzionalità che, al momento, non sono contemplate all'interno della libreria SimpleXML: i commenti e le processing instructions sono saltate e non vengono salvate durante il parsing del documento. Dato che comunque SimpleXML si propone come una libreria per gestire in modo semplice documenti XML semplici, queste non sono mancanze che attualmente complicano il modo di operare.
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Zend FrameworkDiventate professionisti dello sviluppo Web. Zend Framework è lo... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |