AcceptEnd
内容
[
隐藏
]StructuredDocumentTag.AcceptEnd method
接受访问者访问 StructuredDocumentTag 的末尾。
public override VisitorAction AcceptEnd(DocumentVisitor visitor)
范围 | 类型 | 描述 |
---|---|---|
visitor | DocumentVisitor | 文档访问者。 |
返回值
访问者要采取的行动。
例子
展示如何打印文档中每个结构化文档标签的节点结构。
public void StructuredDocumentTagToText()
{
Document doc = new Document(MyDir + "DocumentVisitor-compatible features.docx");
StructuredDocumentTagNodePrinter visitor = new StructuredDocumentTagNodePrinter();
// 当我们得到一个复合节点来接受文档访问者时,访问者会访问接受节点,
// 然后以深度优先的方式遍历该节点的所有子节点。
// 访问者可以读取和修改每个访问的节点。
doc.Accept(visitor);
Console.WriteLine(visitor.GetText());
}
/// <summary>
/// 遍历节点的子节点非二叉树。
/// 以字符串的形式创建所有遇到的 StructuredDocumentTag 节点及其子节点的映射。
/// </summary>
public class StructuredDocumentTagNodePrinter : DocumentVisitor
{
public StructuredDocumentTagNodePrinter()
{
mBuilder = new StringBuilder();
mVisitorIsInsideStructuredDocumentTag = false;
}
/// <summary>
/// 获取访问者积累的文档的纯文本。
/// </summary>
public string GetText()
{
return mBuilder.ToString();
}
/// <summary>
/// 在文档中遇到 Run 节点时调用。
/// </summary>
public override VisitorAction VisitRun(Run run)
{
if (mVisitorIsInsideStructuredDocumentTag) IndentAndAppendLine("[Run] \"" + run.GetText() + "\"");
return VisitorAction.Continue;
}
/// <summary>
/// 当在文档中遇到 StructuredDocumentTag 节点时调用。
/// </summary>
public override VisitorAction VisitStructuredDocumentTagStart(StructuredDocumentTag sdt)
{
IndentAndAppendLine("[StructuredDocumentTag start] Title: " + sdt.Title);
mDocTraversalDepth++;
return VisitorAction.Continue;
}
/// <summary>
/// 在访问了 StructuredDocumentTag 节点的所有子节点后调用。
/// </summary>
public override VisitorAction VisitStructuredDocumentTagEnd(StructuredDocumentTag sdt)
{
mDocTraversalDepth--;
IndentAndAppendLine("[StructuredDocumentTag end]");
return VisitorAction.Continue;
}
/// <summary>
/// 向 StringBuilder 附加一行并根据访问者在文档树中的深度进行缩进。
/// </summary>
/// <param name="text"></param>
private void IndentAndAppendLine(string text)
{
for (int i = 0; i < mDocTraversalDepth; i++) mBuilder.Append("| ");
mBuilder.AppendLine(text);
}
private readonly bool mVisitorIsInsideStructuredDocumentTag;
private int mDocTraversalDepth;
private readonly StringBuilder mBuilder;
}
也可以看看
- enum VisitorAction
- class DocumentVisitor
- class StructuredDocumentTag
- 命名空间 Aspose.Words.Markup
- 部件 Aspose.Words