XML-RPC - 数据模型

XML-RPC 规范定义了六种基本数据类型和两种表示类型组合的复合数据类型。

XML-RPC 中的基本数据类型

类型 示例
int 或 i4 介于 -2,147,483,648 和 -2,147,483,648 之间的 32 位整数2,147,483,647.

<int>27</int>

<i4>27</i4>

double 64 位浮点数

<double>27.31415</double>

<double>-1.1465</double>

布尔值 true (1) 或 false (0)

<boolean>1</boolean>

<boolean>0</boolean>

string ASCII 文本,尽管许多实现都支持 Unicode

<string>Hello</string>

<string>bonkers! @</string>

dateTime.iso8601 ISO8601 格式的日期:CCYYMMDDTHH:MM:SS

<dateTime.iso8601>

20021125T02:20:04

</dateTime.iso8601>

<dateTime.iso8601>

20020104T17:27:30

</dateTime.iso8601>

base64 以 Base 编码的二进制信息64,如 RFC 2045 中所定义

<base64>SGVsbG8sIFdvcmxkIQ==</base64>

这些基本类型始终包含在 value 元素中。字符串(且仅字符串)可以包含在 value 元素中,但省略 string 元素。这些基本类型可以组合成两种更复杂的类型,即数组和结构。数组表示顺序信息,而结构表示名称-值对,与哈希表、关联数组或属性非常相似。

数组由 array 元素表示,该元素包含一个保存值列表的 data 元素。与其他数据类型一样,array 元素必须包含在 value 元素中。例如,以下 array 包含四个字符串:

<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>

The following array contains four integers:

<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>

通过这种方式,您可以实现任何编程语言支持的几乎所有数据类型。