XML-RPC数据模型

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

XML-RPC中的基本数据类型,如下表中所示 -

类型 示例
inti4 32位整数 <int>27</int>, <i4>27</i4>
double 64位浮点数 <double>27.31415</double>, <double>-1.1465</double>
Boolean 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>
base64 二进制信息编码为Base 64,如RFC 2045中所定义 <base64>SGVsbG8sIFdvcmxkIQ==</base64>

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

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

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

以下数组包含四个整数:

<value>
   <array>
      <data>
         <value><int>7</int></value>
         <value><int>1207</int></value>
         <value><int>-99</int></value>
         <value><int>42</int></value>
      </data>
   </array>
</value>

数组也可以包含不同类型的混合,如下所示:

<value>
   <array>
      <data>
         <value><boolean>1</boolean></value>
         <value><string>Array collection, eh?</string></value>
         <value><int>-91</int></value>
         <value><double>142.14325</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>Max</string></value>
      </member>

      <member>
         <name>familyName</name>
         <value><string>Su</string></value>
      </member>

      <member>
         <name>age</name>
         <value><int>26</int></value>
      </member>
   </struct>
</value>

这样就可以实现几乎所有编程语言支持的数据类型。