Zend_Json-xml2json.xml 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 20792 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.json.xml2json">
  5. <title>Conversión de XML a JSON</title>
  6. <para>
  7. <classname>Zend_Json</classname>
  8. roporciona una método conveniente para
  9. transformar datos en formato
  10. <acronym>XML</acronym>
  11. a formato
  12. <acronym>JSON</acronym>
  13. . Esta
  14. característica fue inspirado en un
  15. <ulink url="http://www.ibm.com/developerworks/xml/library/x-xml2jsonphp/">
  16. artículo de IBM developerWorks</ulink>
  17. .
  18. </para>
  19. <para>
  20. <classname>Zend_Json</classname>
  21. incluye una función estática llamada
  22. <methodname>Zend_Json::fromXml()</methodname>
  23. . Esta función generará
  24. <acronym>JSON</acronym>
  25. desde una determinada entrada
  26. <acronym>XML</acronym>
  27. . Esta función
  28. toma cualquier string
  29. <acronym>XML</acronym>
  30. arbitrario como un
  31. parámetro de entrada. También puede tomar opcionalmente parámetros
  32. booleanos de entrada que instruyan a la lógica de conversión de ignorar
  33. o no los atributos
  34. <acronym>XML</acronym>
  35. durante el proceso de
  36. conversión. Si este parámetro opcional de entrada no está dado,
  37. entonces
  38. el comportamiento por defecto es ignorar los atributos
  39. <acronym>XML</acronym>
  40. . La llamada a esta función se hace como se
  41. muestra a continuación:
  42. </para>
  43. <programlisting language="php"><![CDATA[
  44. // la función fromXml simplemente toma un string conteniendo XML
  45. // como entrada.
  46. $jsonContents = Zend_Json::fromXml($xmlStringContents, true);
  47. ]]></programlisting>
  48. <para>
  49. <methodname>Zend_Json::fromXml()</methodname>
  50. función que hace la
  51. conversión del parámetro de entrada formateado como un string
  52. <acronym>XML</acronym>
  53. y devuelve el string de salida equivalente
  54. formateado a
  55. <acronym>JSON</acronym>
  56. . En caso de cualquier entrada con formato
  57. <acronym>XML</acronym>
  58. erróneo o un error en la lógica de
  59. conversión, esta función arrojará una excepción. La
  60. conversión lógica
  61. también usa técnicas recursivas para recorrer el árbol
  62. <acronym>XML</acronym>
  63. . Soporta una recursión de hasta 25 niveles de
  64. profundidad. Más allá de esa profundidad,
  65. arrojará una
  66. <classname>Zend_Json_Exception</classname>
  67. . Hay varios archivos
  68. <acronym>XML</acronym>
  69. con diversos grados de complejidad provistas
  70. en el directorio de tests de Zend Framework. Se
  71. pueden utilizar para
  72. probar la funcionalidad de la característica xml2json.
  73. </para>
  74. <para>
  75. El siguiente es un ejemplo simple que muestra tanto el string de
  76. entrada
  77. <acronym>XML</acronym>
  78. pasado a y al string
  79. <acronym>JSON</acronym>
  80. de salida
  81. devuelto como resultado de la función
  82. <methodname>Zend_Json::fromXml()</methodname>
  83. . Este ejemplo utilizó el
  84. parámetro de la función opcional como para no ignorar los atributos
  85. <acronym>XML</acronym>
  86. durante la conversión. Por lo tanto, puede
  87. notar que el string resultante
  88. <acronym>JSON</acronym>
  89. incluye una representación de los
  90. atributos
  91. <acronym>XML</acronym>
  92. presentes en el string de entrada
  93. <acronym>XML</acronym>
  94. .
  95. </para>
  96. <para>
  97. String de entrada XML pasada a la función
  98. <methodname>Zend_Json::fromXml()</methodname>
  99. :
  100. </para>
  101. <programlisting language="php"><![CDATA[
  102. <?xml version="1.0" encoding="UTF-8"?>
  103. <books>
  104. <book id="1">
  105. <title>Code Generation in Action</title>
  106. <author><first>Jack</first><last>Herrington</last></author>
  107. <publisher>Manning</publisher>
  108. </book>
  109. <book id="2">
  110. <title>PHP Hacks</title>
  111. <author><first>Jack</first><last>Herrington</last></author>
  112. <publisher>O'Reilly</publisher>
  113. </book>
  114. <book id="3">
  115. <title>Podcasting Hacks</title>
  116. <author><first>Jack</first><last>Herrington</last></author>
  117. <publisher>O'Reilly</publisher>
  118. </book>
  119. </books>
  120. ]]></programlisting>
  121. <para>
  122. String de salida
  123. <acronym>JSON</acronym>
  124. devuelto por la función
  125. <methodname>Zend_Json::fromXml()</methodname>
  126. :
  127. </para>
  128. <programlisting language="php"><![CDATA[
  129. {
  130. "books" : {
  131. "book" : [ {
  132. "@attributes" : {
  133. "id" : "1"
  134. },
  135. "title" : "Code Generation in Action",
  136. "author" : {
  137. "first" : "Jack", "last" : "Herrington"
  138. },
  139. "publisher" : "Manning"
  140. }, {
  141. "@attributes" : {
  142. "id" : "2"
  143. },
  144. "title" : "PHP Hacks", "author" : {
  145. "first" : "Jack", "last" : "Herrington"
  146. },
  147. "publisher" : "O'Reilly"
  148. }, {
  149. "@attributes" : {
  150. "id" : "3"
  151. },
  152. "title" : "Podcasting Hacks", "author" : {
  153. "first" : "Jack", "last" : "Herrington"
  154. },
  155. "publisher" : "O'Reilly"
  156. }
  157. ]}
  158. }
  159. ]]></programlisting>
  160. <para>
  161. Más detalles sobre esta característica xml2json pueden encontrarse en
  162. la propuesta original.
  163. Eche un vistazo a la
  164. <ulink url="http://tinyurl.com/2tfa8z">Zend_xml2json proposal</ulink>
  165. .
  166. </para>
  167. </sect1>