Class BuildingBlock
内容
[
隐藏
]BuildingBlock class
表示词汇表文档条目,例如 Building Block、自动图文集或自动更正条目。
public class BuildingBlock : CompositeNode
构造函数
姓名 | 描述 |
---|---|
BuildingBlock(GlossaryDocument) | 初始化这个类的一个新实例。 |
特性
姓名 | 描述 |
---|---|
Behavior { get; set; } | 指定将构建块 的内容插入主文档时应应用的行为。 |
Category { get; set; } | 指定构建块的二级分类。 |
ChildNodes { get; } | 获取该节点的所有直接子节点。 |
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; } | 如果此节点有任何子节点,则返回 true。 |
override IsComposite { get; } | 返回真,因为该节点可以有子节点。 |
LastChild { get; } | 获取节点的最后一个子节点。 |
LastSection { get; } | 获取构建块中的最后一个部分。 |
Name { get; set; } | 获取或设置此构建块的名称。 |
NextSibling { get; } | 获取紧跟此节点的节点。 |
override NodeType { get; } | 返回BuildingBlock值. |
ParentNode { get; } | 获取此节点的直接父节点。 |
PreviousSibling { get; } | 获取紧接在此节点之前的节点。 |
Range { get; } | 返回一个 范围表示此节点中包含的文档部分的对象。 |
Sections { get; } | 返回代表构建块中所有部分的集合。 |
Type { get; set; } | 指定积木类型。 |
方法
姓名 | 描述 |
---|---|
override Accept(DocumentVisitor) | 接受访客。 |
AppendChild(Node) | 将指定节点添加到该节点的子节点列表的末尾。 |
Clone(bool) | 创建节点的副本。 |
CreateNavigator() | 保留供系统使用。 IXPathNavigable. |
GetAncestor(NodeType) | 获取指定的第一个祖先NodeType . |
GetAncestor(Type) | 获取指定对象类型的第一个祖先。 |
GetChild(NodeType, int, bool) | 返回与指定类型匹配的第 N 个子节点。 |
GetChildNodes(NodeType, bool) | 返回与指定类型匹配的子节点的实时集合。 |
GetEnumerator() | 为在该节点的子节点上的每个样式迭代提供支持。 |
override GetText() | 获取该节点及其所有子节点的文本。 |
IndexOf(Node) | 返回子节点数组中指定子节点的索引。 |
InsertAfter(Node, Node) | 在指定参考节点之后立即插入指定节点。 |
InsertBefore(Node, Node) | 在指定的参考节点之前插入指定的节点。 |
NextPreOrder(Node) | 根据前序树遍历算法获取下一个节点。 |
PrependChild(Node) | 将指定节点添加到此节点的子节点列表的开头。 |
PreviousPreOrder(Node) | 根据前序树遍历算法获取上一个节点。 |
Remove() | 从父级中移除自身。 |
RemoveAllChildren() | 移除当前节点的所有子节点。 |
RemoveChild(Node) | 移除指定的子节点。 |
RemoveSmartTags() | 删除所有SmartTag 当前节点的后代节点。 |
SelectNodes(string) | 选择与 XPath 表达式匹配的节点列表。 |
SelectSingleNode(string) | 选择与 XPath 表达式匹配的第一个节点。 |
ToString(SaveFormat) | 将节点的内容导出为指定格式的字符串。 |
ToString(SaveOptions) | 使用指定的保存选项将节点的内容导出为字符串。 |
评论
BuildingBlock
只能包含Section
节点。
BuildingBlock
只能是GlossaryDocument
.
您可以创建新的构建块并将它们插入到词汇表文档中。 您可以修改或删除现有的构建块。您可以在文档之间复制或移动 building blocks 。您可以将构建块的内容插入到文档中。
对应于 文档部分, docPartPr和 docPartBodyOOXML 中的元素。
例子
演示如何将自定义构建块添加到文档。
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;
}
也可以看看
- class CompositeNode
- 命名空间 Aspose.Words.BuildingBlocks
- 部件 Aspose.Words