1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20792 -->
4 <sect1 id="zend.json.xml2json">
5 <title>XML から JSON への変換</title>
7 <classname>Zend_Json</classname> には、<acronym>XML</acronym> 形式のデータを
8 <acronym>JSON</acronym> 形式に変換するための便利なメソッドがあります。
10 <ulink url="http://www.ibm.com/developerworks/xml/library/x-xml2jsonphp/">
11 IBM developerWorks の記事</ulink>
16 <classname>Zend_Json</classname> には、静的関数 <methodname>Zend_Json::fromXml()</methodname>
17 が搭載されています。この関数は、<acronym>XML</acronym> を受け取って <acronym>JSON</acronym> を作成します。
18 入力パラメータには、任意の <acronym>XML</acronym> 文字列を渡すことができます。
19 また、オプションのパラメータで論理値を渡し、
20 変換処理中に <acronym>XML</acronym> の属性を無視するかどうかを指定できます。
21 このパラメータを省略した場合のデフォルトの挙動は、
22 <acronym>XML</acronym> の属性を無視します。この関数の使用法は、以下のようになります。
24 <programlisting language="php"><![CDATA[
25 // fromXml 関数の入力には、XML を含む文字列を渡します
26 $jsonContents = Zend_Json::fromXml($xmlStringContents, true);
30 <methodname>Zend_Json::fromXml()</methodname> 関数は、
31 入力として渡された <acronym>XML</acronym> 形式の文字列を、
32 それと同等な <acronym>JSON</acronym> 形式の文字列に変換して返します。
33 <acronym>XML</acronym> の書式にエラーがあったり変換中にエラーが発生した場合は、
35 変換ロジックは、<acronym>XML</acronym> ツリーを再帰的に走査します。
37 それ以上の深さに達した場合は <classname>Zend_Json_Exception</classname>
38 をスローします。Zend Framework の
39 tests ディレクトリ内には <acronym>XML</acronym> ファイルがいくつか入っているので、
40 それらを用いると xml2json の機能を確かめることができます。
44 <acronym>XML</acronym> 入力文字列の例と、<methodname>Zend_Json::fromXml()</methodname>
45 関数が返す <acronym>JSON</acronym> 文字列の例を次に示します。
47 <acronym>XML</acronym> の属性を無視しないように設定しています。
48 そのため、<acronym>JSON</acronym> 文字列の中に <acronym>XML</acronym>
49 の属性の情報が含まれていることがわかるでしょう。
53 <methodname>Zend_Json::fromXml()</methodname> 関数に渡す <acronym>XML</acronym> 入力文字列です。
56 <programlisting language="php"><![CDATA[
57 <?xml version="1.0" encoding="UTF-8"?>
60 <title>Code Generation in Action</title>
61 <author><first>Jack</first><last>Herrington</last></author>
62 <publisher>Manning</publisher>
66 <title>PHP Hacks</title>
67 <author><first>Jack</first><last>Herrington</last></author>
68 <publisher>O'Reilly</publisher>
72 <title>Podcasting Hacks</title>
73 <author><first>Jack</first><last>Herrington</last></author>
74 <publisher>O'Reilly</publisher>
80 <methodname>Zend_Json::fromXml()</methodname> 関数が返す <acronym>JSON</acronym> 文字列です。
83 <programlisting language="php"><![CDATA[
90 "title" : "Code Generation in Action",
92 "first" : "Jack", "last" : "Herrington"
94 "publisher" : "Manning"
99 "title" : "PHP Hacks", "author" : {
100 "first" : "Jack", "last" : "Herrington"
102 "publisher" : "O'Reilly"
107 "title" : "Podcasting Hacks", "author" : {
108 "first" : "Jack", "last" : "Herrington"
110 "publisher" : "O'Reilly"
117 xml2json の機能についての詳細は、
118 <ulink url="http://tinyurl.com/2tfa8z">Zend_xml2json のプロポーザル</ulink>