Click or drag to resize
NodeChangingAction Enumeration
Specifies the type of node change.

Namespace: Aspose.Words
Assembly: Aspose.Words (in Aspose.Words.dll) Version: 19.11
Syntax
public enum NodeChangingAction
Members
  Member nameValueDescription
Insert0 A node is being inserted in the tree.
Remove1 A node is being removed from the tree.
Remarks
Examples
Shows how to use a NodeChangingCallback to monitor changes to the document tree as it is edited.
public void NodeChangingCallback()
        {
            Document doc = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);

            // Set the NodeChangingCallback attribute to a custom printer 
            doc.NodeChangingCallback = new NodeChangingPrinter();

            // All node additions and removals will be printed to the console as we edit the document
            builder.Writeln("Hello world!");
            builder.StartTable();
            builder.InsertCell();
            builder.Write("Cell 1");
            builder.InsertCell();
            builder.Write("Cell 2");
            builder.EndTable();

#if !(NETSTANDARD2_0 || __MOBILE__)
            builder.InsertImage(Image.FromFile(ImageDir + "Aspose.Words.gif"));
#else
            using (SKBitmap image = SKBitmap.Decode(ImageDir + "Aspose.Words.gif"))
                builder.InsertImage(image);
#endif
            builder.CurrentParagraph.ParentNode.RemoveAllChildren();
        }

        /// <summary>
        /// Prints all inserted/removed nodes as well as their parent nodes
        /// </summary>
        private class NodeChangingPrinter : INodeChangingCallback
        {
            void INodeChangingCallback.NodeInserting(NodeChangingArgs args)
            {
                Assert.AreEqual(NodeChangingAction.Insert, args.Action);
                Assert.AreEqual(null, args.OldParent);
            }

            void INodeChangingCallback.NodeInserted(NodeChangingArgs args)
            {
                Assert.AreEqual(NodeChangingAction.Insert, args.Action);
                Assert.NotNull(args.NewParent);

                Console.WriteLine($"Inserted node:");
                Console.WriteLine($"\tType:\t{args.Node.NodeType}");

                if (args.Node.GetText().Trim() != "")
                {
                    Console.WriteLine($"\tText:\t\"{args.Node.GetText().Trim()}\"");
                }

                Console.WriteLine($"\tHash:\t{args.Node.GetHashCode()}");
                Console.WriteLine($"\tParent:\t{args.NewParent.NodeType} ({args.NewParent.GetHashCode()})");
            }

            void INodeChangingCallback.NodeRemoving(NodeChangingArgs args)
            {
                Assert.AreEqual(NodeChangingAction.Remove, args.Action);
            }

            void INodeChangingCallback.NodeRemoved(NodeChangingArgs args)
            {
                Assert.AreEqual(NodeChangingAction.Remove, args.Action);
                Assert.Null(args.NewParent);

                Console.WriteLine($"Removed node: {args.Node.NodeType} ({args.Node.GetHashCode()})");
            }
        }
See Also