Node

Node class

Basisklasse für alle Knoten eines Word-Dokuments.

Um mehr zu erfahren, besuchen Sie dieAspose.Words Document Object Model (DOM) Dokumentationsartikel.

public abstract class Node

Eigenschaften

NameBeschreibung
CustomNodeId { get; set; }Gibt die benutzerdefinierte Knotenkennung an.
virtual Document { get; }Ruft das Dokument ab, zu dem dieser Knoten gehört.
virtual IsComposite { get; }Gibt zurückWAHR ob dieser Knoten andere Knoten enthalten kann.
NextSibling { get; }Ruft den Knoten ab, der diesem Knoten unmittelbar folgt.
abstract NodeType { get; }Ruft den Typ dieses Knotens ab.
ParentNode { get; }Ruft das unmittelbare übergeordnete Element dieses Knotens ab.
PreviousSibling { get; }Ruft den Knoten ab, der diesem Knoten unmittelbar vorangeht.
Range { get; }Gibt a zurückRange Objekt, das den Teil eines Dokuments darstellt, der in diesem Knoten enthalten ist.

Methoden

NameBeschreibung
abstract Accept(DocumentVisitor)Akzeptiert einen Besucher.
Clone(bool)Erstellt ein Duplikat des Knotens.
GetAncestor(NodeType)Ruft den ersten Vorfahren des angegebenen abNodeType .
GetAncestor(Type)Ruft den ersten Vorfahren des angegebenen Objekttyps ab.
virtual GetText()Ruft den Text dieses Knotens und aller seiner untergeordneten Knoten ab.
NextPreOrder(Node)Ruft den nächsten Knoten gemäß dem Pre-Order-Tree-Traversal-Algorithmus ab.
PreviousPreOrder(Node)Ruft den vorherigen Knoten gemäß dem Pre-Order-Tree-Traversal-Algorithmus ab.
Remove()Entfernt sich selbst vom übergeordneten Element.
ToString(SaveFormat)Exportiert den Inhalt des Knotens in einen String im angegebenen Format.
ToString(SaveOptions)Exportiert den Inhalt des Knotens mit den angegebenen Speicheroptionen in einen String.
static NodeTypeToString(NodeType)Eine Dienstprogrammmethode, die einen Knotentyp-Enumerationswert in eine benutzerfreundliche Zeichenfolge konvertiert.

Bemerkungen

Ein Dokument wird als Knotenbaum dargestellt, ähnlich wie DOM oder XmlDocument.

Weitere Informationen finden Sie im Composite-Designmuster.

DerNode Klasse:

  • Definiert die Schnittstelle des untergeordneten Knotens.
  • Definiert die Schnittstelle für besuchende Knoten.
  • Bietet standardmäßige Klonfunktion.
  • Implementiert Mechanismen für übergeordnete Knoten und Eigentümerdokumente.
  • Implementiert den Zugriff auf Geschwisterknoten.

Beispiele

Zeigt, wie alle untergeordneten Knoten eines bestimmten Typs aus einem zusammengesetzten Knoten entfernt werden.

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)
{
    // Speichern Sie den nächsten Geschwisterknoten als Variable, falls wir nach dem Löschen dieses Knotens dorthin wechseln möchten.
    Node nextNode = curNode.NextSibling;

    // Ein Abschnittshauptteil kann Absatz- und Tabellenknoten enthalten.
    // Wenn der Knoten eine Tabelle ist, entfernen Sie ihn vom übergeordneten Knoten.
    if (curNode.NodeType == NodeType.Table)
        curNode.Remove();

    curNode = nextNode;
}

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

Zeigt, wie ein zusammengesetzter Knoten geklont wird.

Document doc = new Document();
Paragraph para = doc.FirstSection.Body.FirstParagraph;
para.AppendChild(new Run(doc, "Hello world!"));

// Nachfolgend finden Sie zwei Möglichkeiten zum Klonen eines zusammengesetzten Knotens.
// 1 – Erstellen Sie einen Klon eines Knotens und erstellen Sie auch einen Klon jedes seiner untergeordneten Knoten.
Node cloneWithChildren = para.Clone(true);

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

// 2 – Erstellen Sie einen Klon eines einzelnen Knotens ohne untergeordnete Elemente.
Node cloneWithoutChildren = para.Clone(false);

Assert.IsFalse(((CompositeNode)cloneWithoutChildren).HasChildNodes);
Assert.AreEqual(string.Empty, cloneWithoutChildren.GetText().Trim());

Zeigt, wie die Sammlung untergeordneter Knoten eines zusammengesetzten Knotens durchlaufen wird.

Document doc = new Document();

// Fügen Sie dem ersten Absatz dieses Dokuments zwei Läufe und eine Form als untergeordnete Knoten hinzu.
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;
// Beachten Sie, dass die „CustomNodeId“ nicht in einer Ausgabedatei gespeichert wird und nur während der Knotenlebensdauer vorhanden ist.
shape.CustomNodeId = 100;
shape.WrapType = WrapType.Inline;
paragraph.AppendChild(shape);

paragraph.AppendChild(new Run(doc, "Hello again!"));

// Durch die Sammlung der unmittelbar untergeordneten Elemente des Absatzes iterieren,
// und alle Läufe oder Formen drucken, die wir darin finden.
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;
    }

Siehe auch