Zend_Json-xml2json.xml 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15617 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.json.xml2json">
  5. <title>XML to JSON conversion</title>
  6. <para>
  7. <classname>Zend_Json</classname> fournit une méthode de convenance pour transformer
  8. des données au format XML en un format JSON. Ce dispositif est inspiré <ulink
  9. url="http://www.ibm.com/developerworks/xml/library/x-xml2jsonphp/">d'un article de
  10. developerWorks d'IBM</ulink>.
  11. </para>
  12. <para>
  13. <classname>Zend_Json</classname> inclut une fonction statique appelée
  14. <classname>Zend_Json::fromXml()</classname>. Cette fonction produira du JSON à partir d'une
  15. entrée au format XML. Cette fonction prend n'importe quelle chaîne arbitraire XML comme
  16. paramètre d'entrée. Elle prend également un paramètre booléen facultatif d'entrée pour
  17. informer la logique de conversion d'ignorer ou non les attributs XML pendant le processus de
  18. conversion. Si ce paramètre facultatif d'entrée n'est pas donné, alors le comportement par
  19. défaut est d'ignorer les attributs XML. Cet appel de fonction est réalisé comme ceci
  20. :
  21. </para>
  22. <programlisting language="php"><![CDATA[
  23. // la fonction fromXml prend simplement une chaîne
  24. // contenant le XML comme entrée
  25. $jsonContents = Zend_Json::fromXml($xmlStringContents, true);
  26. ]]></programlisting>
  27. <para>
  28. La fonction <classname>Zend_Json::fromXml()</classname> fait la conversion du
  29. paramètre d'entrée (chaîne au format XML) et renvoie le rendu équivalent sous forme de
  30. chaîne au format JSON. En cas d'erreur, de format XML ou de logique de conversion, cette
  31. fonction lèvera une exception. La logique de conversion emploie également des techniques
  32. récursives à travers l'arbre XML. Il supporte la récursivité jusqu'à 25 niveaux de
  33. profondeur. Au delà de cette profondeur, elle lèvera une
  34. <classname>Zend_Json_Exception</classname>. Il y a plusieurs fichiers XML, avec différents
  35. niveaux de complexité, fournis dans le répertoire tests de Zend Framework. Ils peuvent être
  36. utilisés pour tester la fonctionnalité du dispositif xml2json.
  37. </para>
  38. <para>
  39. Ce qui suit est un exemple simple qui montre à la fois la chaîne XML fournie et la
  40. chaîne JSON retournée en résultat de la fonction
  41. <classname>Zend_Json::fromXml()</classname>. Cet exemple utilise le paramètre facultatif
  42. pour ne pas ignorer les attributs XML pendant la conversion. Par conséquent, vous pouvez
  43. noter que la chaîne résultante JSON inclut une représentation des attributs XML actuels de
  44. la chaîne XML fournie.
  45. </para>
  46. <para>Chaîne XML fournie à la fonction <classname>Zend_Json::fromXml()</classname> :</para>
  47. <programlisting language="php"><![CDATA[
  48. <?xml version="1.0" encoding="UTF-8"?>
  49. <books>
  50. <book id="1">
  51. <title>Code Generation in Action</title>
  52. <author><first>Jack</first><last>Herrington</last></author>
  53. <publisher>Manning</publisher>
  54. </book>
  55. <book id="2">
  56. <title>PHP Hacks</title>
  57. <author><first>Jack</first><last>Herrington</last></author>
  58. <publisher>O'Reilly</publisher>
  59. </book>
  60. <book id="3">
  61. <title>Podcasting Hacks</title>
  62. <author><first>Jack</first><last>Herrington</last></author>
  63. <publisher>O'Reilly</publisher>
  64. </book>
  65. </books>
  66. ]]></programlisting>
  67. <para>
  68. Chaîne JSON retournée par la fonction <classname>Zend_Json::fromXml()</classname>
  69. :
  70. </para>
  71. <programlisting language="php"><![CDATA[
  72. {
  73. "books" : {
  74. "book" : [ {
  75. "@attributes" : {
  76. "id" : "1"
  77. },
  78. "title" : "Code Generation in Action",
  79. "author" : {
  80. "first" : "Jack", "last" : "Herrington"
  81. },
  82. "publisher" : "Manning"
  83. }, {
  84. "@attributes" : {
  85. "id" : "2"
  86. },
  87. "title" : "PHP Hacks", "author" : {
  88. "first" : "Jack", "last" : "Herrington"
  89. },
  90. "publisher" : "O'Reilly"
  91. }, {
  92. "@attributes" : {
  93. "id" : "3"
  94. },
  95. "title" : "Podcasting Hacks", "author" : {
  96. "first" : "Jack", "last" : "Herrington"
  97. },
  98. "publisher" : "O'Reilly"
  99. }
  100. ]}
  101. }
  102. ]]></programlisting>
  103. <para>
  104. Plus de détails au sujet de ce dispositif xml2json peuvent être trouvés dans la
  105. proposition originale elle-même. Jetez un oeil à la <ulink
  106. url="http://framework.zend.com/wiki/display/ZFPROP/Zend_xml2json+-+Senthil+Nathan">proposition
  107. Zend_xml2json</ulink>.
  108. </para>
  109. </sect1>