Zweck
Mit Hilfe der Klasse TAdapterXMLWriter können Daten als XML zusammengestellt werden.
Dabei sorgt die Klasse das die XML Vereinbarungen eingehalten werden und die Daten normiert werden.
Die Ausgabe Datei wird immer mittels UTF8 Codierung gespeichert.
Beispiel
Folgendes Beispiel soll die Funktionsweise der TAdapterXMLWriter Klasse verdeutlichen.
procedure ButtonTestSepa_OnClick(Sender: Integer);
var
aWriter : TAdapterXMLWriter;
begin
aWriter := TAdapterXMLWriter.Create;
try
// Optional: Encoding einstellen, entweder encUTF8 für UTF-8 (Multibyte) oder encISO88591 für ISO-8859-1 (Single Byte)
aWriter.Encoding := encISO88591;
aWriter.WriteStartDocument;
aWriter.WriteStartElement('APC:PaymentsContainer');
aWriter.WriteAttributeString('xmlns:APC', 'APC:STUZZA:payments:container:003');
aWriter.WriteAttributeString('xmlns', 'APC:STUZZA:payments:ISO:pain:001:001:02:austrian:001');
aWriter.WriteAttributeString('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
aWriter.WriteAttributeString('xsi:schemaLocation', 'APC:STUZZA:payments:container:003 APC:STUZZA:payments:container:003');
//APC:CntnrInf
aWriter.WriteStartElement('APC:CntnrInf');
aWriter.WriteStringElement('APC:CntnrId', '08012912121201');
aWriter.WriteStringElement('APC:SndgPty', 'HermannMeier');
aWriter.WriteStringElement('APC:RcvPty', 'ATOBERBANK');
aWriter.WriteEndElement(); //APC:CntnrInf
//APC:Msgs
aWriter.WriteStartElement('APC:Msgs');
//APC:Crdts
aWriter.WriteStartElement('APC:Crdts');
//pain.001.001.02
aWriter.WriteStartElement('pain.001.001.02');
//GrpHdr
aWriter.WriteStartElement('GrpHdr');
aWriter.WriteStringElement('MsgId', 'C-001-BH3');
aWriter.WriteStringElement('CreDtTm', formatDateTime_SEPA(now));
aWriter.WriteIntElement('NbOfTxs', 2);
aWriter.WriteDoubleElement('CtrlSum', 111.64);
aWriter.WriteEndElement(); //GrpHdr
aWriter.WriteEndElement(); //pain.001.001.02
aWriter.WriteEndElement(); //APC:Crdts
aWriter.WriteEndElement(); //APC:Msgs
aWriter.WriteEndElement(); //APC:PaymentsContainer
aWriter.SaveToFile('c:\test.xml');
finally
aWriter.Free;
end;
end;
function formatDateTime_SEPA(const aDateTime: TDateTime): string;
begin
result := FormatDateTime('yyyy-mm-dd', aDateTime) + 'T'
+ FormatDateTime('hh:nn:ss', aDateTime);
end;