anterior  
índice  
siguiente  
Updated 2012-10-02 - Version ZF 2.0.3

Conversión de XML a JSON

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:

1
2
3
// 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():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?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():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
   "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.

|

Tema anterior

Uso Avanzado de Zend_Json

Próximo tema

Zend_Json_Server - servidor JSON-RPC

Esta página

Nota: Es necesario estar conectado a tu cuenta GitHub para contribuir a la documentación.

Edit this document

Edit this document

The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.

  1. Login with your GitHub account.
  2. Go to Conversión de XML a JSON on GitHub.
  3. Edit file contents using GitHub's text editor in your web browser
  4. Fill in the Commit message text box at the end of the page telling why you did the changes. Press Propose file change button next to it when done.
  5. On Send a pull request page you don't need to fill in text anymore. Just press Send pull request button.
  6. Your changes are now queued for review under project's Pull requests tab on GitHub.