BuildingBlock

BuildingBlock class

Representa una entrada de documento de glosario, como un bloque de creación, un autotexto o una entrada de autocorrección.

Para obtener más información, visite elModelo de objetos de documento (DOM) de Aspose.Words Artículo de documentación.

public class BuildingBlock : CompositeNode

Constructores

NombreDescripción
BuildingBlock(GlossaryDocument)Inicializa una nueva instancia de esta clase.

Propiedades

NombreDescripción
Behavior { get; set; }Especifica el comportamiento que se aplicará cuando el contenido del bloque de construcción se inserte en el documento principal.
Category { get; set; }Especifica la categorización de segundo nivel para el bloque de construcción.
Count { get; }Obtiene el número de hijos inmediatos de este nodo.
CustomNodeId { get; set; }Especifica un identificador de nodo personalizado.
Description { get; set; }Obtiene o establece la descripción asociada con este bloque de construcción.
virtual Document { get; }Obtiene el documento al que pertenece este nodo.
FirstChild { get; }Obtiene el primer hijo del nodo.
FirstSection { get; }Obtiene la primera sección del bloque de construcción.
Gallery { get; set; }Especifica la categorización de primer nivel para el bloque de construcción a los efectos de clasificación o clasificación de la interfaz de usuario.
Guid { get; set; }Obtiene o establece un identificador (un GUID de 128 bits) que identifica de forma única este bloque de creación.
HasChildNodes { get; }Devuelveverdadero si este nodo tiene nodos secundarios.
override IsComposite { get; }Devuelveverdadero ya que este nodo puede tener nodos secundarios.
LastChild { get; }Obtiene el último hijo del nodo.
LastSection { get; }Obtiene la última sección del bloque de construcción.
Name { get; set; }Obtiene o establece el nombre de este bloque de construcción.
NextSibling { get; }Obtiene el nodo inmediatamente siguiente a este nodo.
override NodeType { get; }Devuelve elBuildingBlock valor.
ParentNode { get; }Obtiene el padre inmediato de este nodo.
PreviousSibling { get; }Obtiene el nodo inmediatamente anterior a este nodo.
Range { get; }Devuelve unRangeobjeto que representa la porción de un documento que está contenida en este nodo.
Sections { get; }Devuelve una colección que representa todas las secciones del bloque de construcción.
Type { get; set; }Especifica el tipo de bloque de construcción.

Métodos

NombreDescripción
override Accept(DocumentVisitor)Acepta un visitante.
override AcceptEnd(DocumentVisitor)Acepta un visitante por visitar el final del BuildingBlock.
override AcceptStart(DocumentVisitor)Acepta un visitante por visitar el inicio del BuildingBlock.
AppendChild<T>(T)Agrega el nodo especificado al final de la lista de nodos secundarios para este nodo.
Clone(bool)Crea un duplicado del nodo.
CreateNavigator()Crea un navegador que puede utilizarse para recorrer y leer nodos.
GetAncestor(NodeType)Obtiene el primer ancestro del especificadoNodeType .
GetAncestor(Type)Obtiene el primer ancestro del tipo de objeto especificado.
GetChild(NodeType, int, bool)Devuelve un nodo secundario N que coincide con el tipo especificado.
GetChildNodes(NodeType, bool)Devuelve una colección activa de nodos secundarios que coinciden con el tipo especificado.
GetEnumerator()Proporciona soporte para cada iteración de estilo sobre los nodos secundarios de este nodo.
override GetText()Obtiene el texto de este nodo y de todos sus hijos.
IndexOf(Node)Devuelve el índice del nodo secundario especificado en la matriz de nodos secundarios.
InsertAfter<T>(T, Node)Inserta el nodo especificado inmediatamente después del nodo de referencia especificado.
InsertBefore<T>(T, Node)Inserta el nodo especificado inmediatamente antes del nodo de referencia especificado.
NextPreOrder(Node)Obtiene el siguiente nodo según el algoritmo de recorrido del árbol de preorden.
PrependChild<T>(T)Agrega el nodo especificado al comienzo de la lista de nodos secundarios para este nodo.
PreviousPreOrder(Node)Obtiene el nodo anterior según el algoritmo de recorrido del árbol de preorden.
Remove()Se elimina a sí mismo del padre.
RemoveAllChildren()Elimina todos los nodos secundarios del nodo actual.
RemoveChild<T>(T)Elimina el nodo secundario especificado.
RemoveSmartTags()Elimina todoSmartTag nodos descendientes del nodo actual.
SelectNodes(string)Selecciona una lista de nodos que coinciden con la expresión XPath.
SelectSingleNode(string)Selecciona el primerNode que coincide con la expresión XPath.
ToString(SaveFormat)Exporta el contenido del nodo en una cadena en el formato especificado.
ToString(SaveOptions)Exporta el contenido del nodo en una cadena utilizando las opciones de guardado especificadas.

Observaciones

BuildingBlock sólo puede contenerSection nodos.

BuildingBlock sólo puede ser hijo deGlossaryDocument.

Puede crear nuevos bloques de creación e insertarlos en un documento de glosario. Puede modificar o eliminar bloques de creación existentes. Puede copiar o mover bloques de creación entre documentos. Puede insertar el contenido de un bloque de creación en un documento.

Corresponde a ladocPart ,docPartPr ydocPartBodyelementos en OOXML.

Ejemplos

Muestra cómo agregar un bloque de construcción personalizado a un documento.

public void CreateAndInsert()
{
    // El glosario de un documento almacena bloques de construcción.
    Document doc = new Document();
    GlossaryDocument glossaryDoc = new GlossaryDocument();
    doc.GlossaryDocument = glossaryDoc;

    // Cree un bloque de construcción, asígnele un nombre y luego agréguelo al documento de glosario.
    BuildingBlock block = new BuildingBlock(glossaryDoc)
    {
        Name = "Custom Block"
    };

    glossaryDoc.AppendChild(block);

    // Todos los GUID de bloques de construcción nuevos tienen el mismo valor cero de manera predeterminada, y podemos darles un nuevo valor único.
    Assert.AreEqual("00000000-0000-0000-0000-000000000000", block.Guid.ToString());

    block.Guid = Guid.NewGuid();

    // Las siguientes propiedades categorizan los bloques de construcción
    // en el menú podemos acceder en Microsoft Word a través de “Insertar” -> “Elementos rápidos” -> “Organizador de bloques de construcción”.
    Assert.AreEqual("(Empty Category)", block.Category);
    Assert.AreEqual(BuildingBlockType.None, block.Type);
    Assert.AreEqual(BuildingBlockGallery.All, block.Gallery);
    Assert.AreEqual(BuildingBlockBehavior.Content, block.Behavior);

    // Antes de que podamos agregar este bloque de construcción a nuestro documento, necesitaremos darle algunos contenidos,
    // Lo haremos usando un visitante de documento. Este visitante también definirá una categoría, una galería y un comportamiento.
    BuildingBlockVisitor visitor = new BuildingBlockVisitor(glossaryDoc);
    // Visita el inicio/fin del BuildingBlock.
    block.Accept(visitor);

    //Podemos acceder al bloque que acabamos de crear desde el documento de glosario.
    BuildingBlock customBlock = glossaryDoc.GetBuildingBlock(BuildingBlockGallery.QuickParts,
        "My custom building blocks", "Custom Block");

    //El bloque en sí es una sección que contiene el texto.
    Assert.AreEqual($"Text inside {customBlock.Name}\f", customBlock.FirstSection.Body.FirstParagraph.GetText());
    Assert.AreEqual(customBlock.FirstSection, customBlock.LastSection);
    //Ahora podemos insertarlo en el documento como una nueva sección.
    doc.AppendChild(doc.ImportNode(customBlock.FirstSection, true));

    //También podemos encontrarlo en el Organizador de bloques de construcción de Microsoft Word y colocarlo manualmente.
    doc.Save(ArtifactsDir + "BuildingBlocks.CreateAndInsert.dotx");
}

/// <summary>
/// Configura un bloque de construcción visitado para insertarlo en el documento como una parte rápida y agrega texto a su contenido.
/// </summary>
public class BuildingBlockVisitor : DocumentVisitor
{
    public BuildingBlockVisitor(GlossaryDocument ownerGlossaryDoc)
    {
        mBuilder = new StringBuilder();
        mGlossaryDoc = ownerGlossaryDoc;
    }

    public override VisitorAction VisitBuildingBlockStart(BuildingBlock block)
    {
        // Configure el bloque de construcción como una parte rápida y agregue propiedades utilizadas por 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;

        //Agrega una sección con texto.
        // Insertar el bloque en el documento agregará esta sección con sus nodos secundarios en la ubicación.
        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;
}

Ver también