Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Access SOAP Body XML
Demonstrates how to access the SOAP body in XML.
<?xml version="1.0" encoding="utf-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cfdi="http://www.sat.gob.mx/cfd/3">
<soapenv:Body>
<tfd:TimbreFiscalDigital version="1.0" />
</soapenv:Body>
</soapenv:Envelope>
Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.Xml;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
xSoapEnvelope: TXml;
xSoapBody: TXml;
xMessageBody: TXml;
soapMessageXml: string;
begin
success := False;
xSoapEnvelope := TXml.Create;
success := xSoapEnvelope.LoadXmlFile('soapMessage.xml');
if (success <> True) then
begin
WriteLn(xSoapEnvelope.LastErrorText);
Exit;
end;
// The root node is the SOAP envelope, and in this particular case has a Tag of "soapenv:Envelope"
WriteLn('SOAP envelope tag: ' + xSoapEnvelope.Tag);
// The SOAP body (in this case) is a direct child of the SOAP envelope
// and has the tag "soapenv:Body"
xSoapBody := xSoapEnvelope.FindChild('soapenv:Body');
if (xSoapEnvelope.LastMethodSuccess = False) then
begin
WriteLn('No direct child having the tag "soapenv:Body" was found.');
Exit;
end;
// The SOAP message body is the direct child of the SOAP envelope body:
xMessageBody := xSoapBody.FindChild('TimbreFiscalDigital');
if (xSoapBody.LastMethodSuccess = False) then
begin
WriteLn('No direct child having the tag "TimbreFiscalDigital" was found.');
xSoapBody.Free;
Exit;
end;
// If desired, get the XML of just the SOAP message body:
soapMessageXml := xSoapBody.GetXml();
xMessageBody.Free;
xSoapBody.Free;
// --------------------------------------------------------------------------------
// Also see Chilkat's Online WSDL Code Generator
// to generate code and SOAP Request and Response XML for each operation in a WSDL.
// --------------------------------------------------------------------------------
xSoapEnvelope.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.