Sample code for 30+ languages & platforms
Delphi DLL

Remove an XML Subtree

See more XML Examples

Demonstrates how to remove an XML subtree from an XML document.

Chilkat Delphi DLL Downloads

Delphi DLL
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;
xml: HCkXml;
xml2: HCkXml;
notUsed: PWideChar;

begin
success := False;

xml := CkXml_Create();

success := CkXml_LoadXmlFile(xml,'qa_data/xml/osszes.xml');

// The XML file we're loading contains this:

// <?xml version="1.0" encoding="iso-8859-2" ?>
// <EXAMPLE>
//     <OSSZES>
//         <ROW TYPE="INS">477953
//             <NUMBER>05107003972</NUMBER>
//         </ROW>
//         <ROW TYPE="INS">477954
//             <NUMBER>05107001342</NUMBER>
//         </ROW>
//         <ROW TYPE="INS">477955
//             <NUMBER>05107001342</NUMBER>
//         </ROW>
//         <ROW TYPE="INS">477956
//             <NUMBER>05107000017</NUMBER>
//         </ROW>**
//         <ROW TYPE="INS">477957
//             <NUMBER>05107002182</NUMBER>
//         </ROW>
//     </OSSZES>
// </EXAMPLE>
// 

// We wish to remove this subtree:

// <ROW TYPE="INS">477956
//     <NUMBER>05107000017</NUMBER>
// </ROW>

// Get another reference to the XML document.
xml2 := CkXml_GetSelf(xml);

// Navigate to the node that is the root of the subtree to be deleted.
// In this case, we wish to find the node having tag "ROW" with content "477956"
notUsed := CkXml__chilkatPath(xml2,'OSSZES|/C/ROW,*477956*|$');

// Examine the xml2, it should be just the subtree.
Memo1.Lines.Add(CkXml__getXml(xml2));

// Now detach xml2 from the it's XML document.
// xml2 will now be it's own XML document.
CkXml_RemoveFromTree(xml2);

// Examine our original XML document.  The subtree is removed:
Memo1.Lines.Add(CkXml__getXml(xml));

CkXml_Dispose(xml2);

CkXml_Dispose(xml);

end;