Node Class

Base class for all nodes of a Word document.

Inheritance Hierarchy


Namespace:  Aspose.Words
Assembly:  Aspose.Words (in Aspose.Words.dll) Version: 20.7.0


public abstract class Node

The Node type exposes the following members.


Public propertyCode exampleDocument
Gets the document to which this node belongs.
Public propertyCode exampleIsComposite
Returns true if this node can contain other nodes.
Public propertyCode exampleNextSibling
Gets the node immediately following this node.
Public propertyCode exampleNodeType
Gets the type of this node.
Public propertyCode exampleParentNode
Gets the immediate parent of this node.
Public propertyCode examplePreviousSibling
Gets the node immediately preceding this node.
Public propertyCode exampleRange
Returns a Range object that represents the portion of a document that is contained in this node.


Public methodCode exampleAccept
Accepts a visitor.
Public methodCode exampleClone
Public methodEquals (Inherited from Object.)
Public methodCode exampleGetAncestor(Type)
Gets the first ancestor of the specified object type.
Public methodCode exampleGetAncestor(NodeType)
Gets the first ancestor of the specified NodeType.
Public methodGetHashCode (Inherited from Object.)
Public methodCode exampleGetText
Gets the text of this node and of all its children.
Public methodGetType (Inherited from Object.)
Public methodCode exampleNextPreOrder
Gets next node according to the pre-order tree traversal algorithm.
Public methodStatic memberCode exampleNodeTypeToString
A utility method that converts a node type enum value into a user friendly string.
Public methodCode examplePreviousPreOrder
Gets the previous node according to the pre-order tree traversal algorithm.
Public methodCode exampleRemove
Removes itself from the parent.
Public methodToString (Inherited from Object.)
Public methodCode exampleToString(SaveFormat)
Exports the content of the node into a string in the specified format.
Public methodCode exampleToString(SaveOptions)
Exports the content of the node into a string using the specified save options.


A document is represented as a tree of nodes, similar to DOM or XmlDocument.

For more info see the Composite design pattern.

The Node class:

  • Defines the child node interface.
  • Defines the interface for visiting nodes.
  • Provides default cloning capability.
  • Implements parent node and owner document mechanisms.
  • Implements access to sibling nodes.


Shows how to enumerate immediate children of a CompositeNode using the enumerator provided by the ChildNodes collection.
Document doc = new Document();

Paragraph paragraph = (Paragraph)doc.GetChild(NodeType.Paragraph, 0, true);
paragraph.AppendChild(new Run(doc, "Hello world!"));
paragraph.AppendChild(new Run(doc, " Hello again!"));

NodeCollection children = paragraph.ChildNodes;

// Paragraph may contain children of various types such as runs, shapes and so on
foreach (Node child in children)
    if (child.NodeType.Equals(NodeType.Run))
        Run run = (Run)child;
Shows how to clone composite nodes with and without their child nodes.
Document doc = new Document();
Paragraph para = doc.FirstSection.Body.FirstParagraph;
para.AppendChild(new Run(doc, "Hello world!"));

// Clone the paragraph and the child nodes
Node cloneWithChildren = para.Clone(true);

Assert.AreEqual("Hello world!", cloneWithChildren.GetText().Trim());

// Clone the paragraph without its clild nodes
Node cloneWithoutChildren = para.Clone(false);

Assert.AreEqual(string.Empty, cloneWithoutChildren.GetText().Trim());
Shows how to remove all nodes of a specific type from a composite node.
Document doc = new Document(MyDir + "Tables.docx");

Assert.AreEqual(2, doc.GetChildNodes(NodeType.Table, true).Count);

// Select the first child node in the body
Node curNode = doc.FirstSection.Body.FirstChild;

while (curNode != null)
    // Save the next sibling node as a variable in case we want to move to it after deleting this node
    Node nextNode = curNode.NextSibling;

    // A section body can contain Paragraph and Table nodes
    // If the node is a Table, remove it from the parent
    if (curNode.NodeType.Equals(NodeType.Table))

    // Continue going through child nodes until null (no more siblings) is reached
    curNode = nextNode;

Assert.AreEqual(0, doc.GetChildNodes(NodeType.Table, true).Count);

See Also

Inheritance Hierarchy