CompositeNode class
CompositeNode class
Base class for nodes that can contain other nodes. To learn more, visit the Aspose.Words Document Object Model (DOM) documentation article.
Remarks
A document is represented as a tree of nodes, similar to DOM or XmlDocument.
For more info see the Composite design pattern.
The CompositeNode class:
Provides access to the child nodes.
Implements Composite operations such as insert and remove children.
Provides methods for XPath navigation.
Inheritance: CompositeNode → Node
Properties
Name | Description |
---|---|
count | Gets the number of immediate children of this node. |
custom_node_id | Specifies custom node identifier. (Inherited from Node) |
document | Gets the document to which this node belongs. (Inherited from Node) |
first_child | Gets the first child of the node. |
has_child_nodes | Returns True if this node has any child nodes. |
is_composite | Returns True as this node can have child nodes. |
last_child | Gets the last child of the node. |
next_sibling | Gets the node immediately following this node. (Inherited from Node) |
node_type | Gets the type of this node. (Inherited from Node) |
parent_node | Gets the immediate parent of this node. (Inherited from Node) |
previous_sibling | Gets the node immediately preceding this node. (Inherited from Node) |
range | Returns a Range object that represents the portion of a document that is contained in this node. (Inherited from Node) |
Methods
Name | Description |
---|---|
accept(visitor) | Accepts a visitor. (Inherited from Node) |
accept_end(visitor) | When implemented in a derived class, calls the VisitXXXEnd method of the specified document visitor. |
accept_start(visitor) | When implemented in a derived class, calls the VisitXXXStart method of the specified document visitor. |
append_child(new_child) | Adds the specified node to the end of the list of child nodes for this node. |
clone(is_clone_children) | Creates a duplicate of the node. (Inherited from Node) |
get_ancestor(ancestor_type) | Gets the first ancestor of the specified object type. (Inherited from Node) |
get_ancestor(ancestor_type) | Gets the first ancestor of the specified NodeType. (Inherited from Node) |
get_child(node_type, index, is_deep) | Returns an Nth child node that matches the specified type. |
get_child_nodes(node_type, is_deep) | Returns a live collection of child nodes that match the specified type. |
get_text() | Gets the text of this node and of all its children. |
index_of(child) | Returns the index of the specified child node in the child node array. |
insert_after(new_child, ref_child) | Inserts the specified node immediately after the specified reference node. |
insert_before(new_child, ref_child) | Inserts the specified node immediately before the specified reference node. |
next_pre_order(root_node) | Gets next node according to the pre-order tree traversal algorithm. (Inherited from Node) |
node_type_to_string(node_type) | A utility method that converts a node type enum value into a user friendly string. (Inherited from Node) |
prepend_child(new_child) | Adds the specified node to the beginning of the list of child nodes for this node. |
previous_pre_order(root_node) | Gets the previous node according to the pre-order tree traversal algorithm. (Inherited from Node) |
remove() | Removes itself from the parent. (Inherited from Node) |
remove_all_children() | Removes all the child nodes of the current node. |
remove_child(old_child) | Removes the specified child node. |
remove_smart_tags() | Removes all SmartTag descendant nodes of the current node. |
select_nodes(xpath) | Selects a list of nodes matching the XPath expression. |
select_single_node(xpath) | Selects the first Node that matches the XPath expression. |
to_string(save_format) | Exports the content of the node into a string in the specified format. (Inherited from Node) |
to_string(save_options) | Exports the content of the node into a string using the specified save options. (Inherited from Node) |
Examples
Shows how to traverse through a composite node’s collection of child nodes.
doc = aw.Document()
# Add two runs and one shape as child nodes to the first paragraph of this document.
paragraph = doc.get_child(aw.NodeType.PARAGRAPH, 0, True).as_paragraph()
paragraph.append_child(aw.Run(doc=doc, text='Hello world! '))
shape = aw.drawing.Shape(doc, aw.drawing.ShapeType.RECTANGLE)
shape.width = 200
shape.height = 200
# Note that the 'CustomNodeId' is not saved to an output file and exists only during the node lifetime.
shape.custom_node_id = 100
shape.wrap_type = aw.drawing.WrapType.INLINE
paragraph.append_child(shape)
paragraph.append_child(aw.Run(doc=doc, text='Hello again!'))
# Iterate through the paragraph's collection of immediate children,
# and print any runs or shapes that we find within.
children = paragraph.get_child_nodes(aw.NodeType.ANY, False)
self.assertEqual(3, paragraph.get_child_nodes(aw.NodeType.ANY, False).count)
for child in children:
switch_condition = child.node_type
if switch_condition == aw.NodeType.RUN:
print('Run contents:')
print(f'\t"{child.get_text().strip()}"')
elif switch_condition == aw.NodeType.SHAPE:
child_shape = child.as_shape()
print('Shape:')
print(f'\t{child_shape.shape_type}, {child_shape.width}x{child_shape.height}')
See Also
- module aspose.words
- class Node