Zend_Json-xml2json.xml 4.8 KB

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