Node
Содержание
[
Скрывать
]Node class
Базовый класс для всех узлов документа Word.
Чтобы узнать больше, посетитеОбъектная модель документа Aspose.Words (DOM) статья документации.
public abstract class Node
Характеристики
Имя | Описание |
---|---|
CustomNodeId { get; set; } | Указывает пользовательский идентификатор узла. |
virtual Document { get; } | Получает документ, которому принадлежит этот узел. |
virtual IsComposite { get; } | Возвращаетистинный если этот узел может содержать другие узлы. |
NextSibling { get; } | Получает узел, следующий сразу за этим узлом. |
abstract NodeType { get; } | Получает тип этого узла. |
ParentNode { get; } | Получает непосредственного родителя этого узла. |
PreviousSibling { get; } | Получает узел, непосредственно предшествующий этому узлу. |
Range { get; } | ВозвращаетRange объект, представляющий часть документа, содержащуюся в этом узле. |
Методы
Имя | Описание |
---|---|
abstract Accept(DocumentVisitor) | Принимает посетителя. |
Clone(bool) | Создает дубликат узла. |
GetAncestor(NodeType) | Получает первого предка указанногоNodeType . |
GetAncestor(Type) | Получает первого предка указанного типа объекта. |
virtual GetText() | Получает текст этого узла и всех его дочерних элементов. |
NextPreOrder(Node) | Получает следующий узел в соответствии с алгоритмом обхода дерева предварительного заказа. |
PreviousPreOrder(Node) | Получает предыдущий узел в соответствии с алгоритмом обхода дерева предварительного заказа. |
Remove() | Удаляет себя от родителя. |
ToString(SaveFormat) | Экспортирует содержимое узла в строку указанного формата. |
ToString(SaveOptions) | Экспортирует содержимое узла в строку, используя указанные параметры сохранения. |
static NodeTypeToString(NodeType) | Служебный метод, который преобразует значение перечисления типа узла в удобную для пользователя строку. |
Примечания
Документ представлен в виде дерева узлов, аналогично DOM или XmlDocument.
Дополнительную информацию см. в разделе «Композитный шаблон проектирования».
Node
сорт:
- Определяет интерфейс дочернего узла.
- Определяет интерфейс для посещения узлов.
- Предоставляет возможность клонирования по умолчанию.
- Реализует механизмы родительского узла и документа владельца.
- Реализует доступ к родственным узлам.
Примеры
Показывает, как удалить все дочерние узлы определенного типа из составного узла.
Document doc = new Document(MyDir + "Tables.docx");
Assert.AreEqual(2, doc.GetChildNodes(NodeType.Table, true).Count);
Node curNode = doc.FirstSection.Body.FirstChild;
while (curNode != null)
{
// Сохраняем следующий одноуровневый узел как переменную на случай, если мы захотим перейти к нему после удаления этого узла.
Node nextNode = curNode.NextSibling;
// Тело раздела может содержать узлы «Абзац» и «Таблица».
// Если узел является таблицей, удалите его из родительского узла.
if (curNode.NodeType == NodeType.Table)
curNode.Remove();
curNode = nextNode;
}
Assert.AreEqual(0, doc.GetChildNodes(NodeType.Table, true).Count);
Показывает, как клонировать составной узел.
Document doc = new Document();
Paragraph para = doc.FirstSection.Body.FirstParagraph;
para.AppendChild(new Run(doc, "Hello world!"));
// Ниже приведены два способа клонирования составного узла.
// 1 — Создать клон узла, а также создать клон каждого из его дочерних узлов.
Node cloneWithChildren = para.Clone(true);
Assert.IsTrue(((CompositeNode)cloneWithChildren).HasChildNodes);
Assert.AreEqual("Hello world!", cloneWithChildren.GetText().Trim());
// 2 — Создать клон узла без дочерних элементов.
Node cloneWithoutChildren = para.Clone(false);
Assert.IsFalse(((CompositeNode)cloneWithoutChildren).HasChildNodes);
Assert.AreEqual(string.Empty, cloneWithoutChildren.GetText().Trim());
Показывает, как перемещаться по коллекции дочерних узлов составного узла.
Document doc = new Document();
// Добавьте два прогона и одну фигуру в качестве дочерних узлов в первый абзац этого документа.
Paragraph paragraph = (Paragraph)doc.GetChild(NodeType.Paragraph, 0, true);
paragraph.AppendChild(new Run(doc, "Hello world! "));
Shape shape = new Shape(doc, ShapeType.Rectangle);
shape.Width = 200;
shape.Height = 200;
// Обратите внимание, что CustomNodeId не сохраняется в выходном файле и существует только во время существования узла.
shape.CustomNodeId = 100;
shape.WrapType = WrapType.Inline;
paragraph.AppendChild(shape);
paragraph.AppendChild(new Run(doc, "Hello again!"));
// Перебираем коллекцию непосредственных дочерних элементов абзаца,
// и распечатываем любые фрагменты или фигуры, которые мы находим внутри.
NodeCollection children = paragraph.GetChildNodes(NodeType.Any, false);
Assert.AreEqual(3, paragraph.GetChildNodes(NodeType.Any, false).Count);
foreach (Node child in children)
switch (child.NodeType)
{
case NodeType.Run:
Console.WriteLine("Run contents:");
Console.WriteLine($"\t\"{child.GetText().Trim()}\"");
break;
case NodeType.Shape:
Shape childShape = (Shape)child;
Console.WriteLine("Shape:");
Console.WriteLine($"\t{childShape.ShapeType}, {childShape.Width}x{childShape.Height}");
break;
}
Смотрите также
- пространство имен Aspose.Words
- сборка Aspose.Words