Menu ▾ ▴

storage xml

Mobius One

Home > Storage XML

Storage XML

[!IMPORTANT]
Em desenvolvimento (2.0). Ainda não está numa versão lançada e pode mudar.

Nível: iniciante

Em uma frase: o TRALStorageXMLLink leva datasets em XML - no formato do
RAL ou nos formatos que o TClientDataSet, o ADO e o TBufDataset já
entendem - no DBWare ou em qualquer lugar onde você precise de um
dataset em XML.

Você vai precisar: o pacote RALModuleXMLPackage (Instalação).

No DBWare, sem código

  1. Coloque um TRALStorageXMLLink (paleta RAL - Storage) no formulário do
    cliente.
  2. Ligue Storage do memtable (TRALDBFDMemTable, TRALDBZMemTable,
    TRALDBBufDataset) a ele.
  3. Deixe XMLType em xtAuto. Pronto.

Com xtAuto o formato é escolhido sozinho, pelo dataset do cliente e pelo
driver do servidor:

Cliente Servidor O que viaja
FireDAC (TRALDBFDMemTable) FireDAC o XML nativo do FireDAC, lido pelo próprio memtable
TRALDBBufDataset sqldb o XML nativo do TBufDataset
TRALDBBufDataset outro DataPacket
qualquer outro qualquer o XML do RAL (DBWare)

O servidor não precisa de nada: o TRALDBModule lê do pedido o storage que o
cliente usa.

Os formatos

XMLType Raiz Para quem
xtDBWare <ralstorage> o formato do RAL: tipos, tamanhos e nulos exatos
xtRAW <dataset> (RootName) XML simples, um elemento por registro (RecordName) e um por campo; para outros sistemas
xtDataPacket <DATAPACKET> o do TClientDataSet (MIDAS) e do TBufDataset (DataPacketDialect)
xtADO <xml> com rs:data o do TADODataSet.SaveToFile(pfXML)

A leitura reconhece qualquer um dos quatro pela raiz, seja qual for o
XMLType. No RAW sem tipos declarados, o tipo de cada campo é deduzido dos
valores (xsi:type, quando vier, ganha).

Fora do DBWare

uses RALStorageXML;

Texto := Query1.ToXML(xtDataPacket);     // o dataset como XML
MemTable1.LoadFromXML(Texto);            // e de volta, qualquer formato

RALStorageXMLSave(Query1, Arquivo, xtADO);
RALStorageXMLLoad(MemTable1, Arquivo);

O link também tem DataSetToXML e XMLToDataSet.

Opções (FormatOptions)

Opção O que faz
Indent uma linha por elemento (padrão: compacto)
DateTimeIsUTC no DBWare e no RAW: True diz que as datas do dataset já estão em UTC e grava Z; o padrão grava a hora local com o fuso. DataPacket e ADO gravam sem fuso, como os componentes deles
RootName, RecordName nomes do RAW (padrão dataset e record)
DataPacketDialect dpdMidas (padrão) ou dpdFPC, o do TBufDataset; os dois são lidos

Decimais (NUMERIC, ftFMTBcd) viajam exatos, com ponto, em qualquer
configuração regional; blobs em base64 (hex no ADO); campos com nome que não é
nome XML (espaço, acento no começo) ganham um nome codificado e voltam iguais.

Veja também


Related

Wiki: dbware
Wiki: xml