Delphi DLL
Delphi DLL
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 Delphi DLL Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Xml;
...
procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
xSoapEnvelope: HCkXml;
xSoapBody: HCkXml;
xMessageBody: HCkXml;
soapMessageXml: PWideChar;
begin
success := False;
xSoapEnvelope := CkXml_Create();
success := CkXml_LoadXmlFile(xSoapEnvelope,'soapMessage.xml');
if (success <> True) then
begin
Memo1.Lines.Add(CkXml__lastErrorText(xSoapEnvelope));
Exit;
end;
// The root node is the SOAP envelope, and in this particular case has a Tag of "soapenv:Envelope"
Memo1.Lines.Add('SOAP envelope tag: ' + CkXml__tag(xSoapEnvelope));
// The SOAP body (in this case) is a direct child of the SOAP envelope
// and has the tag "soapenv:Body"
xSoapBody := CkXml_FindChild(xSoapEnvelope,'soapenv:Body');
if (CkXml_getLastMethodSuccess(xSoapEnvelope) = False) then
begin
Memo1.Lines.Add('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 := CkXml_FindChild(xSoapBody,'TimbreFiscalDigital');
if (CkXml_getLastMethodSuccess(xSoapBody) = False) then
begin
Memo1.Lines.Add('No direct child having the tag "TimbreFiscalDigital" was found.');
CkXml_Dispose(xSoapBody);
Exit;
end;
// If desired, get the XML of just the SOAP message body:
soapMessageXml := CkXml__getXml(xSoapBody);
CkXml_Dispose(xMessageBody);
CkXml_Dispose(xSoapBody);
// --------------------------------------------------------------------------------
// Also see Chilkat's Online WSDL Code Generator
// to generate code and SOAP Request and Response XML for each operation in a WSDL.
// --------------------------------------------------------------------------------
CkXml_Dispose(xSoapEnvelope);
end;