BuildingBlock

BuildingBlock class

Rappresenta una voce di documento del glossario, come un blocco predefinito, un testo automatico o una voce di correzione automatica.

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

public class BuildingBlock : CompositeNode

Costruttori

NomeDescrizione
BuildingBlock(GlossaryDocument)Inizializza una nuova istanza di questa classe.

Proprietà

NomeDescrizione
Behavior { get; set; }Specifica il comportamento che deve essere applicato quando il contenuto del blocco di costruzione viene inserito nel documento principale.
Category { get; set; }Specifica la categorizzazione di secondo livello per il blocco di costruzione.
Count { get; }Ottiene il numero di figli immediati di questo nodo.
CustomNodeId { get; set; }Specifica l’identificatore del nodo personalizzato.
Description { get; set; }Ottiene o imposta la descrizione associata a questo blocco di costruzione.
virtual Document { get; }Ottiene il documento a cui appartiene questo nodo.
FirstChild { get; }Ottiene il primo figlio del nodo.
FirstSection { get; }Ottiene la prima sezione nel blocco di costruzione.
Gallery { get; set; }Specifica la categorizzazione di primo livello per il blocco di costruzione ai fini della classificazione o dell’ordinamento dell’interfaccia utente.
Guid { get; set; }Ottiene o imposta un identificatore (un GUID a 128 bit) che identifica in modo univoco questo blocco di costruzione.
HasChildNodes { get; }RestituisceVERO se questo nodo ha nodi figlio.
override IsComposite { get; }RestituisceVERO poiché questo nodo può avere nodi figlio.
LastChild { get; }Ottiene l’ultimo figlio del nodo.
LastSection { get; }Ottiene l’ultima sezione nel blocco di costruzione.
Name { get; set; }Ottiene o imposta il nome di questo blocco di costruzione.
NextSibling { get; }Ottiene il nodo immediatamente successivo a questo nodo.
override NodeType { get; }Restituisce ilBuildingBlock valore.
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.
Sections { get; }Restituisce una raccolta che rappresenta tutte le sezioni nel blocco di costruzione.
Type { get; set; }Specifica il tipo di blocco di costruzione.

Metodi

NomeDescrizione
override Accept(DocumentVisitor)Accetta un visitatore.
override AcceptEnd(DocumentVisitor)Accetta un visitatore per aver raggiunto la fine del BuildingBlock.
override AcceptStart(DocumentVisitor)Accetta un visitatore per aver visitato l’inizio del BuildingBlock.
AppendChild<T>(T)Aggiunge il nodo specificato alla fine dell’elenco dei nodi figlio per questo nodo.
Clone(bool)Crea un duplicato del nodo.
CreateNavigator()Crea un navigatore che può essere utilizzato per attraversare e leggere i nodi.
GetAncestor(NodeType)Ottiene il primo antenato dell’oggetto specificatoNodeType .
GetAncestor(Type)Ottiene il primo antenato del tipo di oggetto specificato.
GetChild(NodeType, int, bool)Restituisce un N-esimo 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 dei nodi figlio.
InsertAfter<T>(T, Node)Inserisce il nodo specificato subito dopo il nodo di riferimento specificato.
InsertBefore<T>(T, 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 preordinato.
PrependChild<T>(T)Aggiunge il nodo specificato all’inizio dell’elenco dei nodi figlio per questo nodo.
PreviousPreOrder(Node)Ottiene il nodo precedente secondo l’algoritmo di attraversamento dell’albero preordinato.
Remove()Si rimuove dal genitore.
RemoveAllChildren()Rimuove tutti i nodi figlio del nodo corrente.
RemoveChild<T>(T)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 primoNode 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

BuildingBlock può contenere soloSection nodi.

BuildingBlock può essere solo un figlio diGlossaryDocument.

È possibile creare nuovi blocchi costitutivi e inserirli in un documento di glossario. È possibile modificare o eliminare blocchi costitutivi esistenti. È possibile copiare o spostare blocchi costitutivi tra documenti. È possibile inserire il contenuto di un blocco costitutivo in un documento.

Corrisponde aldocPart ,docPartPr EdocPartBodyelementi in OOXML.

Esempi

Mostra come aggiungere un blocco di costruzione personalizzato a un documento.

public void CreateAndInsert()
{
    // Il glossario di un documento memorizza i componenti fondamentali.
    Document doc = new Document();
    GlossaryDocument glossaryDoc = new GlossaryDocument();
    doc.GlossaryDocument = glossaryDoc;

    // Crea un blocco di costruzione, assegnagli un nome e aggiungilo al documento del glossario.
    BuildingBlock block = new BuildingBlock(glossaryDoc)
    {
        Name = "Custom Block"
    };

    glossaryDoc.AppendChild(block);

    // Per impostazione predefinita, tutti i nuovi GUID dei blocchi costitutivi hanno lo stesso valore zero, a cui possiamo assegnare un nuovo valore univoco.
    Assert.AreEqual("00000000-0000-0000-0000-000000000000", block.Guid.ToString());

    block.Guid = Guid.NewGuid();

    // Le seguenti proprietà categorizzano i blocchi di costruzione
    // nel menu a cui possiamo accedere in Microsoft Word tramite "Inserisci" -> "Parti rapide" -> "Organizzatore di blocchi di costruzione".
    Assert.AreEqual("(Empty Category)", block.Category);
    Assert.AreEqual(BuildingBlockType.None, block.Type);
    Assert.AreEqual(BuildingBlockGallery.All, block.Gallery);
    Assert.AreEqual(BuildingBlockBehavior.Content, block.Behavior);

    // Prima di poter aggiungere questo elemento costitutivo al nostro documento, dovremo fornirgli dei contenuti,
    // che faremo utilizzando un visitatore del documento. Questo visitatore imposterà anche una categoria, una galleria e un comportamento.
    BuildingBlockVisitor visitor = new BuildingBlockVisitor(glossaryDoc);
    // Visita l'inizio/la fine del BuildingBlock.
    block.Accept(visitor);

    // Possiamo accedere al blocco appena creato dal documento del glossario.
    BuildingBlock customBlock = glossaryDoc.GetBuildingBlock(BuildingBlockGallery.QuickParts,
        "My custom building blocks", "Custom Block");

    // Il blocco stesso è una sezione che contiene il testo.
    Assert.AreEqual($"Text inside {customBlock.Name}\f", customBlock.FirstSection.Body.FirstParagraph.GetText());
    Assert.AreEqual(customBlock.FirstSection, customBlock.LastSection);
    // Ora possiamo inserirlo nel documento come nuova sezione.
    doc.AppendChild(doc.ImportNode(customBlock.FirstSection, true));

    // Possiamo anche trovarlo nell'Organizzatore dei blocchi di Microsoft Word e posizionarlo manualmente.
    doc.Save(ArtifactsDir + "BuildingBlocks.CreateAndInsert.dotx");
}

/// <summary>
/// Imposta un blocco di costruzione visitato da inserire nel documento come parte rapida e aggiunge testo al suo contenuto.
/// </summary>
public class BuildingBlockVisitor : DocumentVisitor
{
    public BuildingBlockVisitor(GlossaryDocument ownerGlossaryDoc)
    {
        mBuilder = new StringBuilder();
        mGlossaryDoc = ownerGlossaryDoc;
    }

    public override VisitorAction VisitBuildingBlockStart(BuildingBlock block)
    {
        // Configura il blocco di costruzione come parte rapida e aggiungi le proprietà utilizzate da Building Blocks Organizer.
        block.Behavior = BuildingBlockBehavior.Paragraph;
        block.Category = "My custom building blocks";
        block.Description =
            "Using this block in the Quick Parts section of word will place its contents at the cursor.";
        block.Gallery = BuildingBlockGallery.QuickParts;

        // Aggiungi una sezione con testo.
        // L'inserimento del blocco nel documento aggiungerà questa sezione con i suoi nodi figlio nella posizione.
        Section section = new Section(mGlossaryDoc);
        block.AppendChild(section);
        block.FirstSection.EnsureMinimum();

        Run run = new Run(mGlossaryDoc, "Text inside " + block.Name);
        block.FirstSection.Body.FirstParagraph.AppendChild(run);

        return VisitorAction.Continue;
    }

    public override VisitorAction VisitBuildingBlockEnd(BuildingBlock block)
    {
        mBuilder.Append("Visited " + block.Name + "\r\n");
        return VisitorAction.Continue;
    }

    private readonly StringBuilder mBuilder;
    private readonly GlossaryDocument mGlossaryDoc;
}

Guarda anche