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>

這樣就可以實現幾乎所有程式設計語言支援的資料型別。