BuildingBlock

BuildingBlock class

Representa una entrada de documento del 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 creación se inserte en el documento principal.
Category { get; set; }Especifica la categorización de segundo nivel para el bloque de creación.
Count { get; }Obtiene el número de hijos inmediatos de este nodo.
CustomNodeId { get; set; }Especifica el identificador de nodo personalizado.
Description { get; set; }Obtiene o establece la descripción asociada a este bloque de creació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 creación.
Gallery { get; set; }Especifica la categorización de primer nivel para el bloque de creación a efectos de clasificación o ordenación de la interfaz de usuario.
Guid { get; set; }Obtiene o establece un identificador (un GUID de 128 bits) que identifica de forma exclusiva este bloque de creación.
HasChildNodes { get; }Devolucionesverdadero si este nodo tiene nodos secundarios.
override IsComposite { get; }Devolucionesverdadero 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 creación.
Name { get; set; }Obtiene o establece el nombre de este bloque de creación.
NextSibling { get; }Obtiene el nodo que sigue inmediatamente 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 unRange objeto que representa la parte de un documento contenido en este nodo.
Sections { get; }Devuelve una colección que representa todas las secciones del bloque de creación.
Type { get; set; }Especifica el tipo de bloque de creación.

Métodos

NombreDescripción
override Accept(DocumentVisitor)Acepta un visitante.
AppendChild(Node)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 se puede utilizar para atravesar y leer nodos.
GetAncestor(NodeType)Obtiene el primer ancestro del especificadoNodeType .
GetAncestor(Type)Obtiene el primer antepasado del tipo de objeto especificado.
GetChild(NodeType, int, bool)Devuelve un enésimo nodo secundario 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(NodeNode)Inserta el nodo especificado inmediatamente después del nodo de referencia especificado.
InsertBefore(NodeNode)Inserta el nodo especificado inmediatamente antes del nodo de referencia especificado.
NextPreOrder(Node)Obtiene el siguiente nodo según el algoritmo transversal del árbol de pedidos anticipados.
PrependChild(Node)Agrega el nodo especificado al principio de la lista de nodos secundarios para este nodo.
PreviousPreOrder(Node)Obtiene el nodo anterior según el algoritmo transversal del árbol de pedidos anticipados.
Remove()Se elimina del padre.
RemoveAllChildren()Elimina todos los nodos secundarios del nodo actual.
RemoveChild(Node)Elimina el nodo secundario especificado.
RemoveSmartTags()Elimina todoSmartTagnodos descendientes del nodo actual.
SelectNodes(string)Selecciona una lista de nodos que coinciden con la expresión XPath.
SelectSingleNode(string)Selecciona el primeroNode que coincide con la expresión XPath.
ToString(SaveFormat)Exporta el contenido del nodo a una cadena en el formato especificado.
ToString(SaveOptions)Exporta el contenido del nodo a una cadena usando las opciones de guardado especificadas.

Observaciones

BuildingBlock puede contener sóloSection 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 construcción entre documentos. Puede insertar el contenido de un bloque de creación en un documento.

Corresponde a ladocParte ,docPartPr ydocPartCuerpo elementos en OOXML.

Ejemplos

Muestra cómo agregar un bloque de creació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 del 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 forma 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 clasifican los bloques de construcción
    // en el menú podemos acceder en Microsoft Word mediante "Insertar" -> "Partes rápidas" -> "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 cual haremos usando un visitante de documentos. Este visitante también establecerá una categoría, galería y comportamiento.
    BuildingBlockVisitor visitor = new BuildingBlockVisitor(glossaryDoc);
    block.Accept(visitor);

    //Podemos acceder al bloque que acabamos de realizar desde el documento del 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 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 creación como una parte rápida y agregue las propiedades utilizadas por el Organizador de bloques de creación.
        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.
        // Al insertar el bloque en el documento se 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