Zend_Json-xml2json.xml 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <sect1 id="zend.json.xml2json">
  2. <title>Převod XML do JSON</title>
  3. <para>
  4. <code>Zend_Json</code> poskytuje metodu pro převod dat formátovaných
  5. pomocí XML do JSON formátu. Tato vlastnost je inspirována
  6. <ulink url="http://www.ibm.com/developerworks/xml/library/x-xml2jsonphp/">
  7. článkem na IBM developerWorks</ulink>.
  8. </para>
  9. <para>
  10. <code>Zend_Json</code> zahrnuje statickou metodu
  11. <code>Zend_Json::fromXml()</code>. Tato funkce generuje JSON ze vstupu
  12. ve formátu XML. Tato funkce přijímá jako vstupní parametr jakýkoliv XML
  13. řetězec. Také přijímá druhý, volitelný parametr zda ignorovat XML
  14. atributy během převodu. Pokud není tento volitelný parametr zadán,
  15. defaultní chování je ignorování XML atributů. Volání této funkce je
  16. naznačeno níže:
  17. </para>
  18. <programlisting role="php"><![CDATA[
  19. // Funkce fromXml jednoduše přijme String obsahující XML data jak vstup.
  20. $jsonContents = Zend_Json::fromXml($xmlStringContents, true);?>]]>
  21. </programlisting>
  22. <para>
  23. Funkce <code>Zend_Json::fromXml()</code> provádí konverzi vstupního XML
  24. řetězce a vrací odpovídající zápis ve formátu JSON. V případě chyby v
  25. XML nebo chyby při převodu, tato funkce vyhazuje výjimku. Tato konverze
  26. také využívá rekurzivitu při procházení XML stromu. Podporuje zanoření
  27. do 25 úrovní. Za touto hloubkou vyhodí <code>Zend_Json_Exception</code>.
  28. V adresáři tests Zend Frameworku je několik XML souborů s různým stupněm
  29. komplexity pro otestování funkčnosti funkce xml2json.
  30. </para>
  31. <para>
  32. Následující jednoduchý příklad ukazuje jak předaný XML vstup tak JSON
  33. výstup z funkce <code>Zend_Json::fromXml()</code>. Tento příklad využívá
  34. volitelného parametru pro neignorování XML atributů během převodu.
  35. Proto vrácený JSON řetězec obsahuje reprezentaci XML atributů přítomných
  36. ve vstupním XML řetězci.
  37. </para>
  38. <para>
  39. XML řetězec předaný funkci <code>Zend_Json::fromXml()</code>:
  40. </para>
  41. <programlisting role="php"><![CDATA[
  42. <?xml version="1.0" encoding="UTF-8"?>
  43. <books>
  44. <book id="1">
  45. <title>Code Generation in Action</title>
  46. <author><first>Jack</first><last>Herrington</last></author>
  47. <publisher>Manning</publisher>
  48. </book>
  49. <book id="2">
  50. <title>PHP Hacks</title>
  51. <author><first>Jack</first><last>Herrington</last></author>
  52. <publisher>O'Reilly</publisher>
  53. </book>
  54. <book id="3">
  55. <title>Podcasting Hacks</title>
  56. <author><first>Jack</first><last>Herrington</last></author>
  57. <publisher>O'Reilly</publisher>
  58. </book>
  59. </books> ?>]]>
  60. </programlisting>
  61. <para>
  62. JSON výstup vrácený z funkce <code>Zend_Json::fromXml()</code>:
  63. </para>
  64. <programlisting role="php"><![CDATA[
  65. {
  66. "books" : {
  67. "book" : [ {
  68. "@attributes" : {
  69. "id" : "1"
  70. },
  71. "title" : "Code Generation in Action",
  72. "author" : {
  73. "first" : "Jack", "last" : "Herrington"
  74. },
  75. "publisher" : "Manning"
  76. }, {
  77. "@attributes" : {
  78. "id" : "2"
  79. },
  80. "title" : "PHP Hacks", "author" : {
  81. "first" : "Jack", "last" : "Herrington"
  82. },
  83. "publisher" : "O'Reilly"
  84. }, {
  85. "@attributes" : {
  86. "id" : "3"
  87. },
  88. "title" : "Podcasting Hacks", "author" : {
  89. "first" : "Jack", "last" : "Herrington"
  90. },
  91. "publisher" : "O'Reilly"
  92. }
  93. ]}
  94. } ?>]]>
  95. </programlisting>
  96. <para>
  97. Více podrobností o funkci xml2json můžete najít v původním návrhu.
  98. Podívejte se na
  99. <ulink url="http://tinyurl.com/2tfa8z">návrh Zend_xml2json</ulink>.
  100. </para>
  101. </sect1>
  102. <!--
  103. vim:se ts=4 sw=4 et:
  104. -->