XML-RPC - Modelo de Dados

A especificação XML-RPC define seis tipos de dados básicos e dois tipos de dados compostos que representam combinações de tipos.

Tipos de dados básicos em XML-RPC

Tipo Valor Exemplos
int ou i4 Inteiros de 32 bits entre - 2.147.483.648 e 2.147.483.647.

<int> 27 </int>

<i4> 27 </i4>

em dobro Números de ponto flutuante de 64 bits

<double> 27,31415 </double>

<double> -1,1465 </double>

boleano verdadeiro (1) ou falso (0)

<boolean> 1 </boolean>

<boolean> 0 </boolean>

corda Texto ASCII, embora muitas implementações suportem Unicode

<string> Olá </string>

<string> maluco! @ </string>

dateTime.iso8601 Datas no formato ISO8601: CCYYMMDDTHH: MM: SS

<dateTime.iso8601>

20021125T02: 20: 04

</dateTime.iso8601>

<dateTime.iso8601>

20020104T17: 27: 30

</dateTime.iso8601>

base64 Informações binárias codificadas como Base 64, conforme definido na RFC 2045

<base64> SGVsbG8sIFdvcmxkIQ == </base64>

Esses tipos básicos estão sempre incluídos em elementos de valor . Strings (e apenas strings) podem ser incluídos em um elemento de valor , mas omitem o elemento string . Esses tipos básicos podem ser combinados em dois tipos mais complexos, arrays e structs. Arrays representam informações sequenciais, enquanto structs representam pares nome-valor, bem como hashtables, arrays associativos ou propriedades.

As matrizes são indicadas pelo elemento da matriz , que contém um elemento de dados que contém a lista de valores. Como outros tipos de dados, o elemento da matriz deve ser incluído em um elemento de valor . Por exemplo, a seguinte matriz contém quatro strings:

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

A seguinte matriz contém quatro inteiros:

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

Os arrays também podem conter misturas de diferentes tipos, conforme mostrado aqui:

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

Criar matrizes multidimensionais é simples - basta adicionar uma matriz dentro de uma matriz:

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

Uma estrutura simples pode ser semelhante a:

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

Dessa forma, você pode implementar quase todos os tipos de dados suportados por qualquer linguagem de programação.