Zend_Json-xml2json.xml 4.7 KB

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