Node

Node class

Classe base per tutti i nodi di un documento Word.

Per saperne di più, visita ilModello oggetto documento Aspose.Words (DOM) articolo di documentazione.

public abstract class Node

Proprietà

NomeDescrizione
CustomNodeId { get; set; }Specifica l’identificatore del nodo personalizzato.
virtual Document { get; }Ottiene il documento a cui appartiene questo nodo.
virtual IsComposite { get; }RestituisceVERO se questo nodo può contenere altri nodi.
NextSibling { get; }Ottiene il nodo immediatamente successivo a questo nodo.
abstract NodeType { get; }Ottiene il tipo di questo nodo.
ParentNode { get; }Ottiene il genitore immediato di questo nodo.
PreviousSibling { get; }Ottiene il nodo immediatamente precedente questo nodo.
Range { get; }Restituisce aRange oggetto che rappresenta la porzione di documento contenuta in questo nodo.

Metodi

NomeDescrizione
abstract Accept(DocumentVisitor)Accetta un visitatore.
Clone(bool)Crea un duplicato del nodo.
GetAncestor(NodeType)Ottiene il primo antenato dell’oggetto specificatoNodeType .
GetAncestor(Type)Ottiene il primo antenato del tipo di oggetto specificato.
virtual GetText()Ottiene il testo di questo nodo e di tutti i suoi figli.
NextPreOrder(Node)Ottiene il nodo successivo in base all’algoritmo di attraversamento dell’albero di preordine.
PreviousPreOrder(Node)Ottiene il nodo precedente in base all’algoritmo di attraversamento dell’albero di preordine.
Remove()Si rimuove dal genitore.
ToString(SaveFormat)Esporta il contenuto del nodo in una stringa nel formato specificato.
ToString(SaveOptions)Esporta il contenuto del nodo in una stringa utilizzando le opzioni di salvataggio specificate.
static NodeTypeToString(NodeType)Un metodo di utilità che converte un valore enum di tipo nodo in una stringa intuitiva.

Osservazioni

Un documento è rappresentato come un albero di nodi, simile a DOM o XmlDocument.

Per maggiori informazioni vedere il modello di progettazione composito.

ILNode classe:

  • Definisce l’interfaccia del nodo figlio.
  • Definisce l’interfaccia per visitare i nodi.
  • Fornisce funzionalità di clonazione predefinita.
  • Implementa i meccanismi del nodo padre e del documento proprietario.
  • Implementa l’accesso ai nodi fratelli.

Esempi

Mostra come rimuovere tutti i nodi figlio di un tipo specifico da un nodo composito.

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)
{
    // Salva il nodo fratello successivo come variabile nel caso in cui vogliamo spostarci su di esso dopo aver eliminato questo nodo.
    Node nextNode = curNode.NextSibling;

    // Il corpo di una sezione può contenere nodi Paragrafo e Tabella.
    // Se il nodo è una tabella, rimuoverlo dal genitore.
    if (curNode.NodeType == NodeType.Table)
        curNode.Remove();

    curNode = nextNode;
}

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

Mostra come clonare un nodo composito.

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

// Di seguito sono riportati due modi per clonare un nodo composito.
// 1 - Crea un clone di un nodo e crea anche un clone di ciascuno dei suoi nodi figli.
Node cloneWithChildren = para.Clone(true);

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

// 2 - Crea un clone di un nodo da solo senza figli.
Node cloneWithoutChildren = para.Clone(false);

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

Mostra come attraversare la raccolta di nodi figlio di un nodo composito.

Document doc = new Document();

// Aggiungi due sequenze e una forma come nodi secondari al primo paragrafo di questo documento.
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;
// Tieni presente che "CustomNodeId" non viene salvato in un file di output ed esiste solo durante la durata del nodo.
shape.CustomNodeId = 100;
shape.WrapType = WrapType.Inline;
paragraph.AppendChild(shape);

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

// Scorrere la raccolta dei figli immediati del paragrafo,
// e stampa tutte le sequenze o le forme che troviamo all'interno.
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;
    }

Guarda anche