GetChild

CompositeNode.GetChild method

Возвращает N-й дочерний узел, соответствующий указанному типу.

public Node GetChild(NodeType nodeType, int index, bool isDeep)
ПараметрТипОписание
nodeTypeNodeTypeУказывает тип дочернего узла.
indexInt32Индекс дочернего узла для выбора, начинающийся с нуля. Отрицательные индексы также допускаются и указывают на доступ с конца, , то есть -1, означает последний узел.
isDeepBooleanистинный для рекурсивного выбора из всех дочерних узлов; ЛОЖЬ для выбора только среди непосредственных потомков. Смотрите примечания для получения дополнительной информации.

Возвращаемое значение

Дочерний узел, который соответствует критериям илинулевой если соответствующий узел не найден.

Примечания

Если индекс выходит за пределы диапазона,нулевой возвращается.

Обратите внимание, что узлы разметки (StructuredDocumentTag иSmartTag ) пройдены даже тогда, когдаisDeep =ЛОЖЬ иGetChild вызывается для типа узла без разметки. Например, если первый запуск в para обернут вStructuredDocumentTag , он все равно будет возвращенGetChild(Run , 0,ЛОЖЬ).

Примеры

Показывает, как применить свойства стиля таблицы непосредственно к элементам таблицы.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Table table = builder.StartTable();
builder.InsertCell();
builder.Write("Hello world!");
builder.EndTable();

TableStyle tableStyle = (TableStyle)doc.Styles.Add(StyleType.Table, "MyTableStyle1");
tableStyle.RowStripe = 3;
tableStyle.CellSpacing = 5;
tableStyle.Shading.BackgroundPatternColor = Color.AntiqueWhite;
tableStyle.Borders.Color = Color.Blue;
tableStyle.Borders.LineStyle = LineStyle.DotDash;

table.Style = tableStyle;

// Этот метод касается свойств стиля таблицы, таких как те, которые мы установили выше.
doc.ExpandTableStylesToDirectFormatting();

doc.Save(ArtifactsDir + "Document.TableStyleToDirectFormatting.docx");

Показывает, как проходить по коллекции дочерних узлов составного узла.

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;
    }

Смотрите также