<soap:Envelope xmlns:soap="[Link]
org/soap/envelope/">
<soap:Body>
<deltaNotificationResponseElement
xmlns="[Link]
<responseData>
<notifications>
<notification>
<type>DELIVERY_ORDER_RECEIVED</type>
<deliveries>
<delivery
profile="pa160ac9c5795</delivery>
</deliveries>
</notification>
</notifications>
</responseData>
</deltaNotificationResponseElement>
</soap:Body>
</soap:Envelope>
Namespace Registration:
The XmlNamespaceManager is used to register the namespaces (soap and ns) with their
respective URIs.
XPath Query:
The XPath query includes the namespace prefixes (soap and ns) to correctly locate
the <notification> node.
Namespace Prefixes:
soap: Refers to the namespace [Link]
ns: Refers to the namespace
[Link]
Node Selection:
The SelectSingleNode method uses the namespace manager to resolve the prefixes in
the XPath query.
procedure ParseDeltaNotificationResponse(ResponseText: Text)
var
TempBlob: Codeunit "Temp Blob";
XmlDoc: XmlDocument;
RootNode: XmlNode;
NotificationNode: XmlNode;
NamespaceManager: XmlNamespaceManager;
InS: InStream;
OutS: OutStream;
XmlHeader: Text;
begin
// Add XML header if missing
XmlHeader := '<?xml version="1.0" encoding="UTF-8"?>';
if not StrPos(ResponseText, XmlHeader) > 0 then
ResponseText := XmlHeader + ResponseText;
// Write response to TempBlob
[Link](OutS, TextEncoding::UTF8);
[Link](ResponseText);
[Link](InS);
// Load XML document
if not [Link](InS) then
Error('XML document could not be loaded.');
// Get root node
if not [Link](RootNode) then
Error('XML document has no root element.');
// Create and configure namespace manager
NamespaceManager := [Link](XmlDoc);
[Link]('soap',
'[Link]
[Link]('ns',
'[Link]
// Select the <notification> node using the namespace
if [Link]('//soap:Body/ns:deltaNotificationResponseElement/
ns:responseData/ns:notifications/ns:notification', NamespaceManager,
NotificationNode) then begin
Message('Found notification node: %1',
[Link]().GetName());
end else
Error('No <notification> nodes found.');
end;