Node

Node class

Classe base per tutti i nodi di un documento Word.

Per saperne di più, visita ilModello a oggetti del documento (DOM) di Aspose.Words 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 unRangeoggetto che rappresenta la porzione di un 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 preordinato.
PreviousPreOrder(Node)Ottiene il nodo precedente secondo l’algoritmo di attraversamento dell’albero preordinato.
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 di facile utilizzo.

Osservazioni

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

Per maggiori informazioni, vedere il modello di progettazione Composite.

ILNode classe:

  • Definisce l’interfaccia del nodo figlio.
  • Definisce l’interfaccia per visitare i nodi.
  • Fornisce la 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 volessimo 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, rimuoverla dal padre.
    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 metodi per clonare un nodo composito.
// 1 - Crea un clone di un nodo e crea anche un clone di ciascuno dei suoi nodi figlio.
Node cloneWithChildren = para.Clone(true);

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

// 2 - Crea un clone di un nodo senza alcun elemento figlio.
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();

// Aggiungere due sequenze e una forma come nodi figlio 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;
// Nota che 'CustomNodeId' non viene salvato in un file di output ed esiste solo per la durata del nodo.
shape.CustomNodeId = 100;
shape.WrapType = WrapType.Inline;
paragraph.AppendChild(shape);

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

// Scorrere la raccolta di elementi figlio immediati del paragrafo,
// e stampare tutte le sequenze o le forme che troviamo al suo 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