Zend_Json-xml2json.xml 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15156 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.json.xml2json">
  5. <title>XML zu JSON Konvertierung</title>
  6. <para>
  7. <classname>Zend_Json</classname> bietet eine bequeme Methode für das transformieren von XML formatierten Daten
  8. in das JSON Format. Dieses Feature wurde inspiriert durch einen
  9. <ulink url="http://www.ibm.com/developerworks/xml/library/x-xml2jsonphp/">
  10. IBM developerWorks Artikel</ulink>.
  11. </para>
  12. <para>
  13. <classname>Zend_Json</classname> enthält eine statische Funktion die <classname>Zend_Json::fromXml()</classname> heißt.
  14. Diese Funktion erzeugt JSON von einer angegebenen XML Eingabe. Diese Funktion nimmt jeglichen
  15. beliebigen XML String als Eingabe Parameter. Sie nimmt auch einen optionalen Boolschen Eingabe Parameter
  16. um die Konvertierungslogik zu instruieren ob XML Attribute wärend des Konvertierungsprozesses ignoriert
  17. werden sollen oder nicht. Wenn dieser optionale Eingabeparameter nicht angegeben wurde, besteht das
  18. Standardverhalten darun XML Attribute zu ignorieren. Der Funktionsaufruf wird wie folgt durchgeführt:
  19. </para>
  20. <programlisting role="php"><![CDATA[
  21. // Die fromXml Funktion nimmt einfach einen String der XML
  22. // Inhalt als Eingabe enthält.
  23. $jsonContents = Zend_Json::fromXml($xmlStringContents, true);
  24. ]]></programlisting>
  25. <para>
  26. Die <classname>Zend_Json::fromXml()</classname> Funktion führt die Konvertierung des XML formatierten String
  27. Eingabeparameters durch und gibt eine äquivalente JSON formatierte String Ausgabe zurück. Im Fall eines
  28. XML Eingabeformat Fehlers oder eines Konvertierungslogik Fehlers wird diese Funktion eine Ausnahme werfen.
  29. Die Konvertierungslogik verwendet rekursive Techniken um den XML Baum zu durchlaufen. Sie unterstützt
  30. Rekursionen die bis zu 25 Levels tief sind. Über diese Tiefe hinweg wird Sie eine
  31. <classname>Zend_Json_Exception</classname> werfen. Es gibt verschiedenste XML Dateien mit unterschiedlichem Grad an
  32. Komplexität die im tests Verzeichnis des Zend Frameworks vorhanden sind. Sie können verwendet werden um
  33. die Funktionalität des xml2json Features zu testen.
  34. </para>
  35. <para>
  36. Das folgende ist ein einfaches Beispiel das beides zeigt, den XML Eingabe String zu JSON übergeben wird,
  37. und den JSON Ausgabe String der als Ergebnis von der <classname>Zend_Json::fromXml()</classname> Funktion
  38. zurückgegeben wird. Dieses Beispiel verwendet den optionalen Funktionsparameter um die XML Attribute
  39. nicht wärend der Konvertierung zu ignorieren. Demzufolge kann man sehen das der resultierende JSON String
  40. eine Repräsentation der XML Attribute enthält die im XML Eingabestring vorhanden sind.
  41. </para>
  42. <para>
  43. XML Eingabe String der an die <classname>Zend_Json::fromXml()</classname> Funktion übergeben wird:
  44. </para>
  45. <programlisting role="php"><![CDATA[
  46. <?xml version="1.0" encoding="UTF-8"?>
  47. <books>
  48. <book id="1">
  49. <title>Code Generation in Action</title>
  50. <author><first>Jack</first><last>Herrington</last></author>
  51. <publisher>Manning</publisher>
  52. </book>
  53. <book id="2">
  54. <title>PHP Hacks</title>
  55. <author><first>Jack</first><last>Herrington</last></author>
  56. <publisher>O'Reilly</publisher>
  57. </book>
  58. <book id="3">
  59. <title>Podcasting Hacks</title>
  60. <author><first>Jack</first><last>Herrington</last></author>
  61. <publisher>O'Reilly</publisher>
  62. </book>
  63. </books>
  64. ]]></programlisting>
  65. <para>
  66. JSON Ausgabe String der von der <classname>Zend_Json::fromXml()</classname> Funktion zurückgegeben wird:
  67. </para>
  68. <programlisting role="php"><![CDATA[
  69. {
  70. "books" : {
  71. "book" : [ {
  72. "@attributes" : {
  73. "id" : "1"
  74. },
  75. "title" : "Code Generation in Action",
  76. "author" : {
  77. "first" : "Jack", "last" : "Herrington"
  78. },
  79. "publisher" : "Manning"
  80. }, {
  81. "@attributes" : {
  82. "id" : "2"
  83. },
  84. "title" : "PHP Hacks", "author" : {
  85. "first" : "Jack", "last" : "Herrington"
  86. },
  87. "publisher" : "O'Reilly"
  88. }, {
  89. "@attributes" : {
  90. "id" : "3"
  91. },
  92. "title" : "Podcasting Hacks", "author" : {
  93. "first" : "Jack", "last" : "Herrington"
  94. },
  95. "publisher" : "O'Reilly"
  96. }
  97. ]}
  98. }
  99. ]]></programlisting>
  100. <para>
  101. Weitere Details über das xml2json Feature können im originalen Proposal selbst gefunden werden.
  102. Siehe <ulink url="http://tinyurl.com/2tfa8z">Zend_xml2json proposal</ulink>.
  103. </para>
  104. </sect1>
  105. <!--
  106. vim:se ts=4 sw=4 et:
  107. -->