Zend_Json-xml2json.xml 4.4 KB

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