Repository navigation
storage xml
Home > 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).
- Coloque um
TRALStorageXMLLink(paleta RAL - Storage) no formulário do cliente. - Ligue
Storagedo memtable (TRALDBFDMemTable,TRALDBZMemTable,TRALDBBufDataset) a ele. - Deixe
XMLTypeemxtAuto. 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.
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).
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çã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.
- Banco de dados (DBWare)
- XML
-
Servidor SOAP:
ResultDataSetresponde datasets nesses formatos
Começar
Servidor
- Rotas e parâmetros
- Ler o pedido e responder
- Plugins 🚧
- Autenticação
- Banco de dados (DBWare)
- Servir site e arquivos
- Swagger e Postman
- Servidor SOAP 🚧
- HTTPS
- Criptografia ponto a ponto
- Segurança para produção
- Colocar no ar
- Desempenho
Cliente
Motores
Avançado
Ajuda
- Problemas comuns
- Atualizar o Indy
- Várias versões do Delphi
- Vídeos e guias
- Módulos de terceiros
- Licenças
- Contribuir
- Roadmap e changelog
🚧 = em desenvolvimento, pode mudar