NodeChangingArgsNewParent Property |
Namespace: Aspose.Words
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 NETFRAMEWORK builder.InsertImage(Image.FromFile(ImageDir + "Logo.jpg")); #else using (SKBitmap image = SKBitmap.Decode(ImageDir + "Logo.jpg")) 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()})"); } }