Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Remove an XML Subtree
See more XML Examples
Demonstrates how to remove an XML subtree from an XML document.Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.Xml;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
xml: TXml;
xml2: TXml;
notUsed: string;
begin
success := False;
xml := TXml.Create;
success := xml.LoadXmlFile('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 := xml.GetSelf();
// 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 := xml2.ChilkatPath('OSSZES|/C/ROW,*477956*|$');
// Examine the xml2, it should be just the subtree.
WriteLn(xml2.GetXml());
// Now detach xml2 from the it's XML document.
// xml2 will now be it's own XML document.
xml2.RemoveFromTree();
// Examine our original XML document. The subtree is removed:
WriteLn(xml.GetXml());
xml2.Free;
xml.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.