Zend_Json
roporciona una método conveniente para
transformar datos en formato
XML
a formato
JSON
. Esta
característica fue inspirado en un
artículo de IBM developerWorks
.
Zend_Json
incluye una función estática llamada
Zend_Json::fromXml()
. Esta función generará
JSON
desde una determinada entrada
XML
. Esta función
toma cualquier string
XML
arbitrario como un
parámetro de entrada. También puede tomar opcionalmente parámetros
booleanos de entrada que instruyan a la lógica de conversión de ignorar
o no los atributos
XML
durante el proceso de
conversión. Si este parámetro opcional de entrada no está dado,
entonces
el comportamiento por defecto es ignorar los atributos
XML
. La llamada a esta función se hace como se
muestra a continuación:
// la función fromXml simplemente toma un string conteniendo XML // como entrada. $jsonContents = Zend_Json::fromXml($xmlStringContents, true);
Zend_Json::fromXml()
función que hace la
conversión del parámetro de entrada formateado como un string
XML
y devuelve el string de salida equivalente
formateado a
JSON
. En caso de cualquier entrada con formato
XML
erróneo o un error en la lógica de
conversión, esta función arrojará una excepción. La
conversión lógica
también usa técnicas recursivas para recorrer el árbol
XML
. Soporta una recursión de hasta 25 niveles de
profundidad. Más allá de esa profundidad,
arrojará una
Zend_Json_Exception
. Hay varios archivos
XML
con diversos grados de complejidad provistas
en el directorio de tests de Zend Framework. Se
pueden utilizar para
probar la funcionalidad de la característica xml2json.
El siguiente es un ejemplo simple que muestra tanto el string de
entrada
XML
pasado a y al string
JSON
de salida
devuelto como resultado de la función
Zend_Json::fromXml()
. Este ejemplo utilizó el
parámetro de la función opcional como para no ignorar los atributos
XML
durante la conversión. Por lo tanto, puede
notar que el string resultante
JSON
incluye una representación de los
atributos
XML
presentes en el string de entrada
XML
.
String de entrada XML pasada a la función
Zend_Json::fromXml()
:
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="1"> <title>Code Generation in Action</title> <author><first>Jack</first><last>Herrington</last></author> <publisher>Manning</publisher> </book> <book id="2"> <title>PHP Hacks</title> <author><first>Jack</first><last>Herrington</last></author> <publisher>O'Reilly</publisher> </book> <book id="3"> <title>Podcasting Hacks</title> <author><first>Jack</first><last>Herrington</last></author> <publisher>O'Reilly</publisher> </book> </books>
String de salida
JSON
devuelto por la función
Zend_Json::fromXml()
:
{ "books" : { "book" : [ { "@attributes" : { "id" : "1" }, "title" : "Code Generation in Action", "author" : { "first" : "Jack", "last" : "Herrington" }, "publisher" : "Manning" }, { "@attributes" : { "id" : "2" }, "title" : "PHP Hacks", "author" : { "first" : "Jack", "last" : "Herrington" }, "publisher" : "O'Reilly" }, { "@attributes" : { "id" : "3" }, "title" : "Podcasting Hacks", "author" : { "first" : "Jack", "last" : "Herrington" }, "publisher" : "O'Reilly" } ]} }
Más detalles sobre esta característica xml2json pueden encontrarse en la propuesta original. Eche un vistazo a la Zend_xml2json proposal .