XML-RPC-データモデル
XML-RPC仕様では、6つの基本データ型と、型の組み合わせを表す2つの複合データ型が定義されています。
XML-RPCの基本的なデータ型
タイプ | 値 | 例 |
---|---|---|
intまたはi4 | -2,147,483,648〜2,147,483,647の32ビット整数。 | <int> 27 </ int> <i4> 27 </ i4> |
ダブル | 64ビット浮動小数点数 | <double> 27.31415 </ double> <double> -1.1465 </ double> |
ブール値 | true(1)またはfalse(0) | <boolean> 1 </ boolean> <boolean> 0 </ boolean> |
ストリング | ASCIIテキスト、ただし多くの実装はUnicodeをサポートしています | <string>こんにちは</ string> <文字列>ボンカー!@ </ string> |
dateTime.iso8601 | ISO8601形式の日付:CCYYMMDDTHH:MM:SS | <dateTime.iso8601> 20021125T02:20:04 </ dateTime.iso8601> <dateTime.iso8601> 20020104T17:27:30 </ dateTime.iso8601> |
base64 | RFC 2045で定義されているように、Base64としてエンコードされたバイナリ情報 | <base64> SGVsbG8sIFdvcmxkIQ == </ base64> |
これらの基本タイプは常に値要素で囲まれています。文字列(および文字列のみ)はvalue要素で囲むことができますが、string要素は省略します。これらの基本型は、さらに2つの複雑な型、配列、および構造体に組み合わせることができます。配列はシーケンシャル情報を表し、構造体はハッシュテーブル、連想配列、またはプロパティのように名前と値のペアを表します。
配列は、値のリストを保持するデータ要素を含む配列要素によって示されます。他のデータ型と同様に、配列要素は値要素で囲む必要があります。たとえば、次の配列には4つの文字列が含まれています。
<value>
<array>
<data>
<value><string>This </string></value>
<value><string>is </string></value>
<value><string>an </string></value>
<value><string>array.</string></value>
</data>
</array>
</value>
次の配列には4つの整数が含まれています。
<value>
<array>
<data>
<value><int>7</int></value>
<value><int>1247</int></value>
<value><int>-91</int></value>
<value><int>42</int></value>
</data>
</array>
</value>
次に示すように、配列にはさまざまなタイプの混合物を含めることもできます。
<value>
<array>
<data>
<value><boolean>1</boolean></value>
<value><string>Chaotic collection, eh?</string></value>
<value><int>-91</int></value>
<value><double>42.14159265</double></value>
</data>
</array>
</value>
多次元配列の作成は簡単です。配列内に配列を追加するだけです。
<value>
<array>
<data>
<value>
<array>
<data>
<value><int>10</int></value>
<value><int>20</int></value>
<value><int>30</int></value>
</data>
</array>
</value>
<value>
<array>
<data>
<value><int>15</int></value>
<value><int>25</int></value>
<value><int>35</int></value>
</data>
</array>
</value>
</data>
</array>
</value>
単純な構造体は次のようになります。
<value>
<struct>
<member>
<name>givenName</name>
<value><string>Joseph</string></value>
</member>
<member>
<name>familyName</name>
<value><string>DiNardo</string></value>
</member>
<member>
<name>age</name>
<value><int>27</int></value>
</member>
</struct>
</value>
このようにして、任意のプログラミング言語でサポートされているほぼすべてのデータ型を実装できます。