Code:
{$APPTYPE CONSOLE}
uses
Winapi.ActiveX, XML.XMLDoc, XML.XMLIntf;
const
INPUT_XML_STRING: String = '<Dokumenti><Dokument><ID>123456</ID><Ime>Nekoime</Ime></Dokument><Dokument><ID>2344</ID><Ime>Nekoime2</Ime></Dokument></Dokumenti>';
function DeleteDocumentNode(const AXML: IXMLDocument; const AID: Integer): Boolean;
var
node, id_node: IXMLNode;
begin
result := FALSE;
node := AXML.DocumentElement.ChildNodes.First;
while Assigned(node) do
begin
if node.NodeName = 'Dokument' then
begin
id_node := node.ChildNodes.FindNode('ID');
if (Assigned(id_node)) and
(id_node.NodeValue = AID) then
begin
AXML.DocumentElement.ChildNodes.Remove(node);
result := TRUE;
Break;
end;
end;
node := node.NextSibling;
end;
end;
var
xml: IXMLDocument;
output_string: String;
begin
CoInitialize(nil);
try
xml := LoadXMLData(INPUT_XML_STRING);
xml.Active := TRUE;
try
DeleteDocumentNode(xml, 123456);
xml.SaveToXML(output_string);
finally
xml.Active := FALSE;
end;
WriteLn(output_string);
finally
CoUninitialize;
end;
ReadLn;
end.