Sample code for 30+ languages & platforms
Dart

Removing / Deleting Child Nodes from XML

See more XML Examples

Demonstrates various methods for removing child nodes from an XML document.

The input XML, available at http://www.chilkatsoft.com/data/fruit.xml, is this:

<root>
    <fruit color="red">apple</fruit>
    <fruit color="green">pear</fruit>
    <veg color="orange">carrot</veg>
    <meat animal="cow">beef</meat>
    <xyz>
        <fruit color="blue">blueberry</fruit>
        <veg color="green">broccoli</veg>
    </xyz>
    <fruit color="purple">grape</fruit>
    <cheese color="yellow">cheddar</cheese>
</root>

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  final xml = CkXml();

  // The sample input XML is available at http://www.chilkatsoft.com/data/fruit.xml
  try {
    xml.loadXmlFile('fruit.xml');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // The RemoveChild method removes (discards) all direct
  // children having the specified tag:
  xml.removeChild('fruit');

  // Show the resulting XML:
  print('Result with all direct children having a tag equal to "fruit" removed:');
  print(xml.getXml());

  // The XML with the "fruit" direct children removed is shown below:
  // Notice that the "fruit" node beneath "xyz" was not removed.
  // This correct because it was not a direct child of the calling node.

  // <root>
  //     <veg color="orange">carrot</veg>
  //     <meat animal="cow">beef</meat>
  //     <xyz>
  //         <fruit color="blue">blueberry</fruit>
  //         <veg color="green">broccoli</veg>
  //     </xyz>
  //     <cheese color="yellow">cheddar</cheese>
  // </root>

  // --------------------------------------------------------------------------
  // Restore the original XML:
  xml.loadXmlFile('fruit.xml');

  // The RemoveChildWithContent method removes the child
  // having the exact content specified, regardless of the tag.  
  // For example:
  xml.removeChildWithContent('pear');

  // Show the resulting XML:
  print('Result with the node containing "pear" removed:');
  print(xml.getXml());

  // --------------------------------------------------------------------------
  // Restore the original XML:
  xml.loadXmlFile('fruit.xml');

  // The RemoveChildByIndex method removes the Nth direct
  // child.  Indexing begins at 0.  The "xyz" child is at index 4:
  xml.removeChildByIndex(4);

  // Show the resulting XML:
  // Notice that the entire "xyz" subtree is removed.
  print('Result with the node at index 4 removed:');
  print(xml.getXml());

  // --------------------------------------------------------------------------
  // Restore the original XML:
  xml.loadXmlFile('fruit.xml');

  // Navigate to the node with tag "xyz";
  final xyz = xml.findChild('xyz');

  // Remove the "xyz" subtree making it it's own XML document
  // with the "xyz" node at the root:
  xyz.removeFromTree();

  // Show both XML documents:
  print(xyz.getXml());
  print(xml.getXml());

  // Also, the TreeId property is an integer value assigned
  // to nodes in an XML document.  All nodes belonging to
  // the same XML document will have the same TreeId.
  // Notice that the "xyz" node now has a different TreeId:
  print('xyz TreeId = ${xyz.treeId}');
  print('xml TreeId = ${xml.treeId}');
}