Sample code for 30+ languages & platforms
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

Pascal (Lazarus/Delphi)
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.