Node

Node class

Basklass för alla noder i ett Word-dokument.

För att lära dig mer, besökAspose.Words-dokumentobjektmodell (DOM) dokumentationsartikel.

public abstract class Node

Egenskaper

namnBeskrivning
CustomNodeId { get; set; }Anger anpassad nodidentifierare.
virtual Document { get; }Hämtar dokumentet som denna nod tillhör.
virtual IsComposite { get; }Returersann om denna nod kan innehålla andra noder.
NextSibling { get; }Hämtar noden som följer direkt 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 som omedelbart föregår denna nod.
Range { get; }Returnerar enRangeobjekt som representerar den del av ett dokument som finns i denna nod.

Metoder

namnBeskrivning
abstract Accept(DocumentVisitor)Tar emot en besökare.
Clone(bool)Skapar en duplikat av noden.
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.
virtual GetText()Hämtar texten för denna nod och alla dess underordnade noder.
NextPreOrder(Node)Hämtar nästa nod enligt algoritmen för förbeställningsträdtraversering.
PreviousPreOrder(Node)Hämtar föregående nod enligt algoritmen för trädtraversering i förbeställning.
Remove()Tar bort sig själv från föräldern.
ToString(SaveFormat)Exporterar nodens innehåll till en sträng i det angivna formatet.
ToString(SaveOptions)Exporterar nodens innehåll till en sträng med de angivna sparalternativen.
static NodeTypeToString(NodeType)En verktygsmetod som konverterar ett nodtypsuppräkningsvärde till en användarvänlig sträng.

Anmärkningar

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

För mer information, se mönstret för sammansatt design.

DeNode klass:

  • Definierar gränssnittet för undernoden.
  • Definierar gränssnittet för besökande noder.
  • Tillhandahåller standard kloningsfunktion.
  • Implementerar mekanismer för föräldranod och ägardokument.
  • Implementerar åtkomst till syskonnoder.

Exempel

Visar hur man tar bort alla underordnade noder av en specifik typ från en sammansatt nod.

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)
{
    // Spara nästa syskonnod som en variabel ifall vi vill flytta till den efter att vi tagit bort den här noden.
    Node nextNode = curNode.NextSibling;

    // En sektionstext kan innehålla stycke- och tabellnoder.
    // Om noden är en tabell, ta bort den från föräldern.
    if (curNode.NodeType == NodeType.Table)
        curNode.Remove();

    curNode = nextNode;
}

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

Visar hur man klonar en sammansatt nod.

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

// Nedan följer två sätt att klona en sammansatt nod.
// 1 - Skapa en klon av en nod och skapa även en klon av var och en av dess undernoder.
Node cloneWithChildren = para.Clone(true);

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

// 2 - Skapa en klon av en nod helt för sig själv utan några underordnade noder.
Node cloneWithoutChildren = para.Clone(false);

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

Visar hur man navigerar genom en sammansatt nods samling av underordnade noder.

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 finns 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 omedelbara underordnade,
// och skriv ut alla körningar eller former som vi hittar inuti.
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;
    }

Se även