Zend_Json-xml2json.xml 4.8 KB

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