Conversione da XML a JSON
Zend_Json fornisce un metodo di supporto per la trasformazione di dati XML nel formato JSON.
Questa funzione è stata ispirata dall'articolo IBM developerWorks.
Zend_Json include una funzione statica chiamata Zend_Json::fromXml().
Questa funzione genera codice JSON da un input XML. Accetta una qualsiasi stringa XML arbitraria come parametro di input. Accetta inoltre un parametro booleano opzionale per istruire la logica della conversione ad ignorare o no gli attributi XML nel processo di trasformazione.
Se non si fornisce questo parametro opzionale il comportamento predefinito consiste nell'ignorare gli attributi XML.
La chiamata a questo funzione avviene nel modo seguente:
]]>
La funzione Zend_Json::fromXml() esegue la conversione del parametro stringa contenente l'XML e restituisce l'equivalente contenuto nel formato JSON.
In caso di errori nel formato XML o errori nella logica di conversione, questa funzione genera un'eccezione.
La logica della funzione utilizza inoltre una tecnica ricorsiva per scorrere l'albero XML. Supporta una ricorsione fino a 25 livelli di profondità.
Oltre a questo livello sarà generata un'eccezione Zend_Json_Exception.
Ci sono diversi file con vari livelli di difficoltà forniti nella directory di test del Framework Zend. Possono essere usati per verificare le caratteristiche della funzionalità xml2json.
L'esempio seguente mostra sia la stringa XML passata come parametro, sia la stringa JSON restituita come risultato della funzione Zend_Json::fromXml().
Questo esempio utilizza il parametro opzionale per indicare di non ignorare gli attributi XML in fase di conversione.
Di conseguenza, è possibile notare come la stringa JSON risultante includa una rappresentazione degli attributi XML presenti nella stringa XML iniziale.
La stringa XML passata alla funzione Zend_Json::fromXml():
Code Generation in Action
JackHerrington
Manning
PHP Hacks
JackHerrington
O'Reilly
Podcasting Hacks
JackHerrington
O'Reilly
?>]]>
La stringa JSON restituita dalla funzione Zend_Json::fromXml():
]]>
E' possibile trovare maggiori dettagli su questa funzionalità xml2json nella proposta originale.
Si consiglia di dare uno sguardo alla proposta Zend_xml2json.