SimpleXML è in PHP uno dei modi più semplici ed intuitivi per eseguire il parsing di documenti XML o di documenti il cui formato è derivato da XML. Tuttavia, a volte quest'estensione può non funzionare qualora si verifichino dei problemi. Scopo di questo articolo è quello di evidenziare i problemi più comuni e di individuare soluzioni che siano semplici da implementare.
XML malformato
SimpleXML vuole che il documento XML di destinazione sia ben formato. Nello specifico, i requisiti sono:
- prologo XML
- corretto annidamento degli elementi
- caratteri speciali inseriti nella codifica corretta (di solito UTF-8)
- caratteri riconducibili a marcatura propriamente convertiti in entità SGML
- elementi vuoti chiusi in modo opportuno
Qualora il documento di destinazione sia malformato, SimpleXML restituisce un Warning ed il parsing fallisce. Per questo motivo si raccomanda sempre di verificare in anticipo che il documento XML di destinazione sia ben formato.
File streaming
Se si intende usare SimpleXML per effettuare il parsing di un documento XML da remoto, è necessario verificare in precedenza che la direttiva di php.ini
allow_url_fopen sia impostata su 1 (impostazione predefinita). Qualora non lo fosse occorre impostarla su tale valore. Se non è possibile modificare il file php.ini
direttamente, si può utilizzare la funzione ini_set().
La funzione simplexml_load_file() può funzionare solo se il documento XML rintracciabile all'URL passato come primo parametro è in un formato compatibile con XML, ossia text/xml
, application/xml
e più in generale tutti i formati che abbiano come sottotipo il valore xml
.
Questa funzione non può eseguire il parsing di documenti serviti come text/html
o in altri formati non compatibili con XML.