Delphi DLL
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
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;