[ZF-10089] Zend_Log
[zend.git] / documentation / manual / ja / module_specs / Zend_Json-xml2json.xml
blob09f0ae260530ae54845a03e9afb1ff9dcaab2fab
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 20792 -->
4 <sect1 id="zend.json.xml2json">
5     <title>XML から JSON への変換</title>
6     <para>
7         <classname>Zend_Json</classname> には、<acronym>XML</acronym> 形式のデータを
8         <acronym>JSON</acronym> 形式に変換するための便利なメソッドがあります。
9         この機能は
10         <ulink url="http://www.ibm.com/developerworks/xml/library/x-xml2jsonphp/">
11         IBM developerWorks の記事</ulink>
12         に触発されて追加したものです。
13     </para>
15     <para>
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> の属性を無視します。この関数の使用法は、以下のようになります。
23     </para>
24     <programlisting language="php"><![CDATA[
25 // fromXml 関数の入力には、XML を含む文字列を渡します
26 $jsonContents = Zend_Json::fromXml($xmlStringContents, true);
27 ]]></programlisting>
29     <para>
30         <methodname>Zend_Json::fromXml()</methodname> 関数は、
31         入力として渡された <acronym>XML</acronym> 形式の文字列を、
32         それと同等な <acronym>JSON</acronym> 形式の文字列に変換して返します。
33         <acronym>XML</acronym> の書式にエラーがあったり変換中にエラーが発生した場合は、
34         この関数は例外をスローします。
35         変換ロジックは、<acronym>XML</acronym> ツリーを再帰的に走査します。
36         最大で 25 段階までの再帰を行います。
37         それ以上の深さに達した場合は <classname>Zend_Json_Exception</classname>
38         をスローします。Zend Framework の
39         tests ディレクトリ内には <acronym>XML</acronym> ファイルがいくつか入っているので、
40         それらを用いると xml2json の機能を確かめることができます。
41     </para>
43     <para>
44         <acronym>XML</acronym> 入力文字列の例と、<methodname>Zend_Json::fromXml()</methodname>
45         関数が返す <acronym>JSON</acronym> 文字列の例を次に示します。
46         この例では、オプションのパラメータで
47         <acronym>XML</acronym> の属性を無視しないように設定しています。
48         そのため、<acronym>JSON</acronym> 文字列の中に <acronym>XML</acronym>
49         の属性の情報が含まれていることがわかるでしょう。
50     </para>
52     <para>
53         <methodname>Zend_Json::fromXml()</methodname> 関数に渡す <acronym>XML</acronym> 入力文字列です。
54     </para>
56     <programlisting language="php"><![CDATA[
57 <?xml version="1.0" encoding="UTF-8"?>
58 <books>
59     <book id="1">
60         <title>Code Generation in Action</title>
61         <author><first>Jack</first><last>Herrington</last></author>
62         <publisher>Manning</publisher>
63     </book>
65     <book id="2">
66         <title>PHP Hacks</title>
67         <author><first>Jack</first><last>Herrington</last></author>
68         <publisher>O'Reilly</publisher>
69     </book>
71     <book id="3">
72         <title>Podcasting Hacks</title>
73         <author><first>Jack</first><last>Herrington</last></author>
74         <publisher>O'Reilly</publisher>
75     </book>
76 </books>
77 ]]></programlisting>
79     <para>
80         <methodname>Zend_Json::fromXml()</methodname> 関数が返す <acronym>JSON</acronym> 文字列です。
81     </para>
83     <programlisting language="php"><![CDATA[
85    "books" : {
86       "book" : [ {
87          "@attributes" : {
88             "id" : "1"
89          },
90          "title" : "Code Generation in Action",
91          "author" : {
92             "first" : "Jack", "last" : "Herrington"
93          },
94          "publisher" : "Manning"
95       }, {
96          "@attributes" : {
97             "id" : "2"
98          },
99          "title" : "PHP Hacks", "author" : {
100             "first" : "Jack", "last" : "Herrington"
101          },
102          "publisher" : "O'Reilly"
103       }, {
104          "@attributes" : {
105             "id" : "3"
106          },
107          "title" : "Podcasting Hacks", "author" : {
108             "first" : "Jack", "last" : "Herrington"
109          },
110          "publisher" : "O'Reilly"
111       }
112    ]}
114 ]]></programlisting>
116     <para>
117         xml2json の機能についての詳細は、
118         <ulink url="http://tinyurl.com/2tfa8z">Zend_xml2json のプロポーザル</ulink>
119         を参照ください。
120     </para>
122 </sect1>
123 <!--
124 vim:se ts=4 sw=4 et: