BuildingBlock

BuildingBlock class

表示词汇表文档条目,例如 Building Block、自动图文集或自动更正条目。

要了解更多信息,请访问Aspose.Words 文档对象模型 (DOM)文档文章。

public class BuildingBlock : CompositeNode

构造函数

姓名描述
BuildingBlock(GlossaryDocument)初始化此类的新实例。

特性

姓名描述
Behavior { get; set; }指定将构建块 的内容插入主文档时应应用的行为。
Category { get; set; }指定构建块的二级分类。
Count { get; }获取此节点的直接子节点的数量。
CustomNodeId { get; set; }指定自定义节点标识符。
Description { get; set; }获取或设置与此构建块关联的描述。
virtual Document { get; }获取该节点所属的文档。
FirstChild { get; }获取节点的第一个子节点。
FirstSection { get; }获取构建块中的第一个部分。
Gallery { get; set; }指定构建块的第一级分类,以用于 分类或用户界面排序。
Guid { get; set; }获取或设置唯一标识此构建块的标识符(128 位 GUID)。
HasChildNodes { get; }返回真的如果该节点有任何子节点.
override IsComposite { get; }返回真的因为该节点可以有子节点。
LastChild { get; }获取节点的最后一个子节点。
LastSection { get; }获取构建块中的最后一部分。
Name { get; set; }获取或设置此构建块的名称。
NextSibling { get; }获取紧随该节点的下一个节点。
override NodeType { get; }返回BuildingBlock值.
ParentNode { get; }获取此节点的直接父节点。
PreviousSibling { get; }获取紧邻此节点之前的节点。
Range { get; }返回一个Range表示此节点中包含的文档部分的对象。
Sections { get; }返回表示构建块中所有部分的集合。
Type { get; set; }指定构建块类型。

方法

姓名描述
override Accept(DocumentVisitor)接受访客。
AppendChild(Node)将指定节点添加到该节点的子节点列表的末尾。
Clone(bool)创建节点的副本。
CreateNavigator()创建可用于遍历和读取节点的导航器。
GetAncestor(NodeType)获取指定的第一个祖先NodeType.
GetAncestor(Type)获取指定对象类型的第一个祖先。
GetChild(NodeType, int, bool)返回与指定类型匹配的第 N 个子节点。
GetChildNodes(NodeType, bool)返回与指定类型匹配的子节点的实时集合。
GetEnumerator()为该节点的子节点上的每个样式迭代提供支持。
override GetText()获取此节点及其所有子节点的文本。
IndexOf(Node)返回子节点数组中指定子节点的索引。
InsertAfter(NodeNode)在指定的引用节点之后立即插入指定的节点。
InsertBefore(NodeNode)在指定的引用节点之前插入指定的节点。
NextPreOrder(Node)根据先序树遍历算法获取下一个节点。
PrependChild(Node)将指定节点添加到该节点的子节点列表的开头。
PreviousPreOrder(Node)根据先序树遍历算法获取前一个节点。
Remove()将自身从父级中删除。
RemoveAllChildren()删除当前节点的所有子节点。
RemoveChild(Node)删除指定的子节点。
RemoveSmartTags()删除所有SmartTag当前节点的后代节点.
SelectNodes(string)选择与 XPath 表达式匹配的节点列表。
SelectSingleNode(string)选择第一个Node与 XPath 表达式匹配。
ToString(SaveFormat)将节点的内容导出为指定格式的字符串。
ToString(SaveOptions)使用指定的保存选项将节点的内容导出到字符串中。

评论

BuildingBlock只能包含Section节点。

BuildingBlock只能是一个孩子GlossaryDocument

您可以创建新的构建基块并将其插入术语表文档中。 您可以修改或删除现有的构建基块。您可以在文档之间复制或移动构建块 。您可以将构建块的内容插入到文档中。

对应于文档部分,文档部分Pr文档部分正文OOXML 中的元素。

例子

演示如何将自定义构建块添加到文档中。

public void CreateAndInsert()
{
    // 文档的术语表文档存储构建块。
    Document doc = new Document();
    GlossaryDocument glossaryDoc = new GlossaryDocument();
    doc.GlossaryDocument = glossaryDoc;

    // 创建一个构建块,为其命名,然后将其添加到术语表文档中。
    BuildingBlock block = new BuildingBlock(glossaryDoc)
    {
        Name = "Custom Block"
    };

    glossaryDoc.AppendChild(block);

    // 默认情况下,所有新的构建块 GUID 都具有相同的零值,我们可以给它们一个新的唯一值。
    Assert.AreEqual("00000000-0000-0000-0000-000000000000", block.Guid.ToString());

    block.Guid = Guid.NewGuid();

    // 以下属性对构建块进行分类
    // 在菜单中我们可以通过“插入”在 Microsoft Word 中访问 -> “快速零件”-> “积木组织者”。
    Assert.AreEqual("(Empty Category)", block.Category);
    Assert.AreEqual(BuildingBlockType.None, block.Type);
    Assert.AreEqual(BuildingBlockGallery.All, block.Gallery);
    Assert.AreEqual(BuildingBlockBehavior.Content, block.Behavior);

    // 在我们将此构建块添加到文档之前,我们需要为其提供一些内容,
    // 我们将使用文档访问者来完成此操作。该访客还将设置类别、画廊和行为。
    BuildingBlockVisitor visitor = new BuildingBlockVisitor(glossaryDoc);
    block.Accept(visitor);

    // 我们可以访问刚刚从词汇表文档中创建的块。
    BuildingBlock customBlock = glossaryDoc.GetBuildingBlock(BuildingBlockGallery.QuickParts,
        "My custom building blocks", "Custom Block");

    // 块本身是包含文本的部分。
    Assert.AreEqual($"Text inside {customBlock.Name}\f", customBlock.FirstSection.Body.FirstParagraph.GetText());
    Assert.AreEqual(customBlock.FirstSection, customBlock.LastSection);
    // 现在,我们可以将其作为新部分插入到文档中。
    doc.AppendChild(doc.ImportNode(customBlock.FirstSection, true));

    // 我们也可以在 Microsoft Word 的 Building Blocks Organizer 中找到它并手动放置。
    doc.Save(ArtifactsDir + "BuildingBlocks.CreateAndInsert.dotx");
}

/// <summary>
/// 设置要作为快速部分插入到文档中的已访问构建块,并向其内容添加文本。
/// </summary>
public class BuildingBlockVisitor : DocumentVisitor
{
    public BuildingBlockVisitor(GlossaryDocument ownerGlossaryDoc)
    {
        mBuilder = new StringBuilder();
        mGlossaryDoc = ownerGlossaryDoc;
    }

    public override VisitorAction VisitBuildingBlockStart(BuildingBlock block)
    {
        // 将 Building Block 配置为快速部件,并添加 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;

        // 添加带有文本的部分。
        // 将块插入到文档中将在该位置附加此部分及其子节点。
        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;
}

也可以看看