CompositeNode

CompositeNode class

Basisklasse für Knoten, die andere Knoten enthalten können.

public abstract class CompositeNode : Node, IEnumerable<Node>, IXPathNavigable

Eigenschaften

Name Beschreibung
ChildNodes { get; } Ruft alle unmittelbar untergeordneten Knoten dieses Knotens ab.
Count { get; } Ruft die Anzahl der unmittelbaren Kinder dieses Knotens ab.
CustomNodeId { get; set; } Gibt die benutzerdefinierte Knotenkennung an.
virtual Document { get; } Ruft das Dokument ab, zu dem dieser Knoten gehört.
FirstChild { get; } Ruft das erste untergeordnete Element des Knotens ab.
HasChildNodes { get; } Gibt wahr zurück, wenn dieser Knoten untergeordnete Knoten hat.
override IsComposite { get; } Gibt wahr zurück, da dieser Knoten untergeordnete Knoten haben kann.
LastChild { get; } Ruft das letzte untergeordnete Element des Knotens ab.
NextSibling { get; } Ruft den Knoten ab, der diesem Knoten unmittelbar folgt.
abstract NodeType { get; } Ruft den Typ dieses Knotens ab.
ParentNode { get; } Ruft den unmittelbar übergeordneten Knoten dieses Knotens ab.
PreviousSibling { get; } Ruft den Knoten unmittelbar vor diesem Knoten ab.
Range { get; } Gibt a zurück Bereich Objekt, das den Teil eines Dokuments darstellt, das in diesem Knoten enthalten ist.

Methoden

Name Beschreibung
abstract Accept(DocumentVisitor) Akzeptiert einen Besucher.
AppendChild(Node) Fügt den angegebenen Knoten am Ende der Liste der untergeordneten Knoten für diesen Knoten hinzu.
Clone(bool) Erstellt ein Duplikat des Knotens.
CreateNavigator() Reserviert für Systemnutzung. IXPfadNavigierbar.
GetAncestor(NodeType) Ruft den ersten Vorfahren der angegebenen abNodeType .
GetAncestor(Type) Ruft den ersten Vorfahren des angegebenen Objekttyps ab.
GetChild(NodeType, int, bool) Gibt einen N-ten untergeordneten Knoten zurück, der dem angegebenen Typ entspricht.
GetChildNodes(NodeType, bool) Gibt eine Live-Sammlung von untergeordneten Knoten zurück, die dem angegebenen Typ entsprechen.
GetEnumerator() Bietet Unterstützung für die Iteration für jeden Stil über die untergeordneten Knoten dieses Knotens.
override GetText() Ruft den Text dieses Knotens und aller seiner Kinder ab.
IndexOf(Node) Gibt den Index des angegebenen untergeordneten Knotens im untergeordneten Knotenarray zurück.
InsertAfter(Node, Node) Fügt den angegebenen Knoten unmittelbar nach dem angegebenen Referenzknoten ein.
InsertBefore(Node, Node) Fügt den angegebenen Knoten unmittelbar vor dem angegebenen Referenzknoten ein.
NextPreOrder(Node) Ruft den nächsten Knoten gemäß dem Traversalalgorithmus des Vorbestellungsbaums ab.
PrependChild(Node) Fügt den angegebenen Knoten am Anfang der Liste der untergeordneten Knoten für diesen Knoten hinzu.
PreviousPreOrder(Node) Ruft den vorherigen Knoten gemäß dem Traversalalgorithmus des Vorbestellungsbaums ab.
Remove() Entfernt sich selbst vom übergeordneten Element.
RemoveAllChildren() Entfernt alle untergeordneten Knoten des aktuellen Knotens.
RemoveChild(Node) Entfernt den angegebenen untergeordneten Knoten.
RemoveSmartTags() Entfernt alleSmartTag Nachkommenknoten des aktuellen Knotens.
SelectNodes(string) Wählt eine Liste von Knoten aus, die mit dem XPath-Ausdruck übereinstimmen.
SelectSingleNode(string) Wählt den ersten Knoten aus, der mit dem XPath-Ausdruck übereinstimmt.
ToString(SaveFormat) Exportiert den Inhalt des Knotens in einen String im angegebenen Format.
ToString(SaveOptions) Exportiert den Inhalt des Knotens unter Verwendung der angegebenen Speicheroptionen in einen String.

Bemerkungen

Ein Dokument wird ähnlich wie DOM oder XmlDocument als Baum aus Knoten dargestellt.

Weitere Informationen finden Sie im Composite-Designmuster.

DasCompositeNodeKlasse:

  • Bietet Zugriff auf die untergeordneten Knoten.
  • Implementiert zusammengesetzte Operationen wie das Einfügen und Entfernen von untergeordneten Elementen.
  • Stellt Methoden für die XPath-Navigation bereit.

Beispiele

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 Lebensdauer des Knotens existiert.
shape.CustomNodeId = 100;
shape.WrapType = WrapType.Inline;
paragraph.AppendChild(shape);

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

// Durch die Sammlung der unmittelbaren Kinder des Absatzes iterieren,
// und drucken Sie alle Läufe oder Formen, die wir darin finden.
NodeCollection children = paragraph.ChildNodes;

Assert.AreEqual(3, paragraph.ChildNodes.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}");
    }

Siehe auch