CompositeNode

CompositeNode class

Basklass för noder som kan innehålla andra noder.

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

Egenskaper

namn Beskrivning
ChildNodes { get; } Hämtar alla omedelbara underordnade noder för denna nod.
Count { get; } Hämtar antalet omedelbara barn till denna nod.
CustomNodeId { get; set; } Anger anpassad nodidentifierare.
virtual Document { get; } Hämtar dokumentet som denna nod tillhör.
FirstChild { get; } Får det första barnet i noden.
HasChildNodes { get; } Returnerar sant om denna nod har några underordnade noder.
override IsComposite { get; } Returnerar sant eftersom denna nod kan ha underordnade noder.
LastChild { get; } Hämtar nodens sista underordnade.
NextSibling { get; } Hämtar noden omedelbart efter denna nod.
abstract NodeType { get; } Hämtar typen av denna nod.
ParentNode { get; } Hämtar den omedelbara föräldern till denna nod.
PreviousSibling { get; } Hämtar noden omedelbart före denna nod.
Range { get; } Returnerar en Räckvidd objekt som representerar den del av ett dokument som finns i denna nod.

Metoder

namn Beskrivning
abstract Accept(DocumentVisitor) Accepterar en besökare.
AppendChild(Node) Lägger till den angivna noden i slutet av listan över underordnade noder för denna nod.
Clone(bool) Skapar en dubblett av noden.
CreateNavigator() Reserverad för systemanvändning. IXPathNavigable.
GetAncestor(NodeType) Hämtar den första förfadern till den angivnaNodeType .
GetAncestor(Type) Hämtar den första förfadern till den angivna objekttypen.
GetChild(NodeType, int, bool) Returnerar en N:te underordnad nod som matchar den angivna typen.
GetChildNodes(NodeType, bool) Returnerar en aktiv samling av underordnade noder som matchar den angivna typen.
GetEnumerator() Tillhandahåller stöd för varje stiliteration över undernoderna för denna nod.
override GetText() Hämtar texten för denna nod och alla dess underordnade.
IndexOf(Node) Returnerar indexet för den angivna undernoden i den underordnade nodmatrisen.
InsertAfter(Node, Node) Infogar den angivna noden omedelbart efter den angivna referensnoden.
InsertBefore(Node, Node) Infogar den angivna noden omedelbart före den angivna referensnoden.
NextPreOrder(Node) Hämtar nästa nod enligt algoritmen för förbeställningsträdet.
PrependChild(Node) Lägger till den angivna noden i början av listan över underordnade noder för denna nod.
PreviousPreOrder(Node) Hämtar föregående nod enligt algoritmen för förbeställningsträdet.
Remove() Tar bort sig själv från föräldern.
RemoveAllChildren() Tar bort alla undernoder för den aktuella noden.
RemoveChild(Node) Tar bort den angivna underordnade noden.
RemoveSmartTags() Tar bort allaSmartTag underliggande noder till den aktuella noden.
SelectNodes(string) Väljer en lista med noder som matchar XPath-uttrycket.
SelectSingleNode(string) Väljer den första noden som matchar XPath-uttrycket.
ToString(SaveFormat) Exporterar innehållet i noden till en sträng i angivet format.
ToString(SaveOptions) Exporterar innehållet i noden till en sträng med de angivna sparalternativen.

Anmärkningar

Ett dokument representeras som ett träd av noder, liknande DOM eller XmlDocument.

För mer information se Composite design mönster.

DeCompositeNodeklass:

  • Ger åtkomst till barnnoderna.
  • Implementerar sammansatta operationer som att sätta in och ta bort barn.
  • Tillhandahåller metoder för XPath-navigering.

Exempel

Visar hur man går igenom en sammansatt nods samling av undernoder.

Document doc = new Document();

// Lägg till två körningar och en form som underordnade noder i det första stycket i detta dokument.
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;
// Observera att 'CustomNodeId' inte sparas i en utdatafil och endast existerar under nodens livstid.
shape.CustomNodeId = 100;
shape.WrapType = WrapType.Inline;
paragraph.AppendChild(shape);

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

// Iterera genom styckets samling av närmaste barn,
// och skriv ut alla körningar eller former som vi hittar inom.
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}");
    }

Se även