NodeCollection

NodeCollection class

表示特定类型的节点集合。

要了解更多信息,请访问Aspose.Words 文档对象模型 (DOM)文档文章。

public class NodeCollection : IEnumerable<Node>

特性

姓名描述
Count { get; }获取集合中的节点数。
Item { get; }检索给定索引处的节点。

方法

姓名描述
Add(Node)将节点添加到集合的末尾。
Clear()从此集合和文档中删除所有节点。
Contains(Node)确定节点是否在集合中。
GetEnumerator()在节点集合上提供简单的“foreach”样式迭代。
IndexOf(Node)返回指定节点的从零开始的索引。
Insert(int, Node)将节点插入集合中指定索引处。
Remove(Node)从集合和文档中删除节点。
RemoveAt(int)从集合和文档中删除指定索引处的节点。
ToArray()将集合中的所有节点复制到新的节点数组。

评论

NodeCollection不拥有它包含的节点,而是只是指定类型的节点 的选择,但节点存储在树中各自的父节点下。

NodeCollection支持索引访问、迭代并提供添加和删除方法。

NodeCollection集合是“实时”的,即对创建它的节点 object 的子节点所做的更改会立即反映在由NodeCollection 属性和方法。

NodeCollection由返回GetChildNodes 并且还用作类型化节点集合的基类,例如SectionCollection, ParagraphCollection ETC。

NodeCollection可以是“扁平”的并且仅包含其创建的节点 的直接子节点,也可以是“深”的并且包含所有后代子节点。

例子

演示如何用图像形状替换所有文本框形状。

Document doc = new Document(MyDir + "Textboxes in drawing canvas.docx");

Shape[] shapes = doc.GetChildNodes(NodeType.Shape, true).OfType<Shape>().ToArray();

Assert.AreEqual(3, shapes.Count(s => s.ShapeType == ShapeType.TextBox));
Assert.AreEqual(1, shapes.Count(s => s.ShapeType == ShapeType.Image));

foreach (Shape shape in shapes)
{
    if (shape.ShapeType == ShapeType.TextBox)
    {
        Shape replacementShape = new Shape(doc, ShapeType.Image);
        replacementShape.ImageData.SetImage(ImageDir + "Logo.jpg");
        replacementShape.Left = shape.Left;
        replacementShape.Top = shape.Top;
        replacementShape.Width = shape.Width;
        replacementShape.Height = shape.Height;
        replacementShape.RelativeHorizontalPosition = shape.RelativeHorizontalPosition;
        replacementShape.RelativeVerticalPosition = shape.RelativeVerticalPosition;
        replacementShape.HorizontalAlignment = shape.HorizontalAlignment;
        replacementShape.VerticalAlignment = shape.VerticalAlignment;
        replacementShape.WrapType = shape.WrapType;
        replacementShape.WrapSide = shape.WrapSide;

        shape.ParentNode.InsertAfter(replacementShape, shape);
        shape.Remove();
    }
}

shapes = doc.GetChildNodes(NodeType.Shape, true).OfType<Shape>().ToArray();

Assert.AreEqual(0, shapes.Count(s => s.ShapeType == ShapeType.TextBox));
Assert.AreEqual(4, shapes.Count(s => s.ShapeType == ShapeType.Image));

doc.Save(ArtifactsDir + "Shape.ReplaceTextboxesWithImages.docx");

也可以看看