XML-RPC - модель данных

Спецификация XML-RPC определяет шесть основных типов данных и два составных типа данных, которые представляют комбинации типов.

Основные типы данных в XML-RPC

Тип Значение Примеры
int или i4 32-разрядные целые числа от - 2 147 483 648 до 2 147 483 647.

<Int> 27 </ Int>

<I4> 27 </ i4>

двойной 64-битные числа с плавающей точкой

<Двойной> 27,31415 </ двойной>

<Двойной> -1,1465 </ двойной>

логический true (1) или false (0)

<Логическое значение> 1 </ булево>

<Логическое> 0 </ булево>

строка Текст ASCII, хотя многие реализации поддерживают Unicode

<Строка> Hello </ строка>

<строка> помешанные! @ </ Строка>

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

Таким образом, вы можете реализовать практически все типы данных, поддерживаемые любым языком программирования.