Zend_Json-xml2json.xml 5.0 KB

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