CompositeNode

CompositeNode class

Classe base per nodi che possono contenere altri nodi.

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

Proprietà

Nome Descrizione
ChildNodes { get; } Ottiene tutti i nodi figlio immediati di questo nodo.
Count { get; } Ottiene il numero di figli immediati di questo nodo.
CustomNodeId { get; set; } Specifica l’identificatore del nodo personalizzato.
virtual Document { get; } Ottiene il documento a cui appartiene questo nodo.
FirstChild { get; } Ottiene il primo figlio del nodo.
HasChildNodes { get; } Restituisce true se questo nodo ha nodi figlio.
override IsComposite { get; } Restituisce true poiché questo nodo può avere nodi figlio.
LastChild { get; } Ottiene l’ultimo figlio del nodo.
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 a questo nodo.
Range { get; } Restituisce a Gamma oggetto che rappresenta la parte di un documento contenuta in questo nodo.

Metodi

Nome Descrizione
abstract Accept(DocumentVisitor) Accetta un visitatore.
AppendChild(Node) Aggiunge il nodo specificato alla fine dell’elenco dei nodi figlio per questo nodo.
Clone(bool) Crea un duplicato del nodo.
CreateNavigator() Riservato per l’uso del sistema. IXPathNavigable.
GetAncestor(NodeType) Ottiene il primo predecessore dell’oggetto specificatoNodeType .
GetAncestor(Type) Ottiene il primo predecessore del tipo di oggetto specificato.
GetChild(NodeType, int, bool) Restituisce un ennesimo nodo figlio che corrisponde al tipo specificato.
GetChildNodes(NodeType, bool) Restituisce una raccolta live di nodi figlio che corrispondono al tipo specificato.
GetEnumerator() Fornisce supporto per ogni iterazione di stile sui nodi figlio di questo nodo.
override GetText() Ottiene il testo di questo nodo e di tutti i suoi figli.
IndexOf(Node) Restituisce l’indice del nodo figlio specificato nell’array del nodo figlio.
InsertAfter(Node, Node) Inserisce il nodo specificato subito dopo il nodo di riferimento specificato.
InsertBefore(Node, Node) Inserisce il nodo specificato immediatamente prima del nodo di riferimento specificato.
NextPreOrder(Node) Ottiene il nodo successivo in base all’algoritmo di attraversamento dell’albero di preordine.
PrependChild(Node) Aggiunge il nodo specificato all’inizio dell’elenco dei nodi figlio per questo nodo.
PreviousPreOrder(Node) Ottiene il nodo precedente in base all’algoritmo di attraversamento dell’albero di preordine.
Remove() Si rimuove dal genitore.
RemoveAllChildren() Rimuove tutti i nodi figlio del nodo corrente.
RemoveChild(Node) Rimuove il nodo figlio specificato.
RemoveSmartTags() Rimuove tuttoSmartTag nodi discendenti del nodo corrente.
SelectNodes(string) Seleziona un elenco di nodi che corrispondono all’espressione XPath.
SelectSingleNode(string) Seleziona il primo nodo che corrisponde all’espressione XPath.
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.

Osservazioni

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

Per ulteriori informazioni, vedere il modello di progettazione Composite.

IlCompositeNodeclasse:

  • Fornisce l’accesso ai nodi figlio.
  • Implementa operazioni composite come inserire e rimuovere figli.
  • Fornisce metodi per la navigazione in XPath.

Esempi

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

Document doc = new Document();

// Aggiungi due esecuzioni 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 durante la vita del nodo.
shape.CustomNodeId = 100;
shape.WrapType = WrapType.Inline;
paragraph.AppendChild(shape);

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

// Scorri la raccolta del paragrafo dei figli immediati,
// e stampa qualsiasi traccia o forma che troviamo all'interno.
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}");
    }

Guarda anche