AcceptEnd
Contenu
[
Cacher
]CompositeNode.AcceptEnd method
Lorsqu’il est implémenté dans une classe dérivée, appelle la méthode VisitXXXEnd du visiteur du document spécifié.
public abstract VisitorAction AcceptEnd(DocumentVisitor visitor)
Exemples
Montre comment utiliser un visiteur de document pour imprimer la structure des nœuds d’un document.
public void DocStructureToText()
{
Document doc = new Document(MyDir + "DocumentVisitor-compatible features.docx");
DocStructurePrinter visitor = new DocStructurePrinter();
// Lorsque nous obtenons un nœud composite pour accepter un visiteur de document, le visiteur visite le nœud acceptant,
// et parcourt ensuite tous les enfants du nœud de manière approfondie.
// Le visiteur peut lire et modifier chaque nœud visité.
doc.Accept(visitor);
Console.WriteLine(visitor.GetText());
}
/// <summary>
/// Parcourt l'arbre des nœuds enfants d'un nœud.
/// Crée une carte de cet arbre sous la forme d'une chaîne.
/// </summary>
public class DocStructurePrinter : DocumentVisitor
{
public DocStructurePrinter()
{
mAcceptingNodeChildTree = new StringBuilder();
}
public string GetText()
{
return mAcceptingNodeChildTree.ToString();
}
/// <summary>
/// Appelé lorsqu'un nœud Document est rencontré.
/// </summary>
public override VisitorAction VisitDocumentStart(Document doc)
{
int childNodeCount = doc.GetChildNodes(NodeType.Any, true).Count;
IndentAndAppendLine("[Document start] Child nodes: " + childNodeCount);
mDocTraversalDepth++;
// Autoriser le visiteur à continuer à visiter d'autres nœuds.
return VisitorAction.Continue;
}
/// <summary>
/// Appelé après que tous les nœuds enfants d'un nœud Document ont été visités.
/// </summary>
public override VisitorAction VisitDocumentEnd(Document doc)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Document end]");
return VisitorAction.Continue;
}
/// <summary>
/// Appelé lorsqu'un nœud Section est rencontré dans le document.
/// </summary>
public override VisitorAction VisitSectionStart(Section section)
{
// Obtenir l'index de notre section dans le document.
NodeCollection docSections = section.Document.GetChildNodes(NodeType.Section, false);
int sectionIndex = docSections.IndexOf(section);
IndentAndAppendLine("[Section start] Section index: " + sectionIndex);
mDocTraversalDepth++;
return VisitorAction.Continue;
}
/// <summary>
/// Appelé après que tous les nœuds enfants d'un nœud Section ont été visités.
/// </summary>
public override VisitorAction VisitSectionEnd(Section section)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Section end]");
return VisitorAction.Continue;
}
/// <summary>
/// Appelé lorsqu'un nœud Body est rencontré dans le document.
/// </summary>
public override VisitorAction VisitBodyStart(Body body)
{
int paragraphCount = body.Paragraphs.Count;
IndentAndAppendLine("[Body start] Paragraphs: " + paragraphCount);
mDocTraversalDepth++;
return VisitorAction.Continue;
}
/// <summary>
/// Appelé après que tous les nœuds enfants d'un nœud Body ont été visités.
/// </summary>
public override VisitorAction VisitBodyEnd(Body body)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Body end]");
return VisitorAction.Continue;
}
/// <summary>
/// Appelé lorsqu'un nœud Paragraphe est rencontré dans le document.
/// </summary>
public override VisitorAction VisitParagraphStart(Paragraph paragraph)
{
IndentAndAppendLine("[Paragraph start]");
mDocTraversalDepth++;
return VisitorAction.Continue;
}
/// <summary>
/// Appelé après que tous les nœuds enfants d'un nœud Paragraphe ont été visités.
/// </summary>
public override VisitorAction VisitParagraphEnd(Paragraph paragraph)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Paragraph end]");
return VisitorAction.Continue;
}
/// <summary>
/// Appelé lorsqu'un nœud Run est rencontré dans le document.
/// </summary>
public override VisitorAction VisitRun(Run run)
{
IndentAndAppendLine("[Run] \"" + run.GetText() + "\"");
return VisitorAction.Continue;
}
/// <summary>
/// Appelé lorsqu'un nœud de sous-document est rencontré dans le document.
/// </summary>
public override VisitorAction VisitSubDocument(SubDocument subDocument)
{
IndentAndAppendLine("[SubDocument]");
return VisitorAction.Continue;
}
/// <summary>
/// Appelé lorsqu'un nœud de sous-document est rencontré dans le document.
/// </summary>
public override VisitorAction VisitStructuredDocumentTagRangeStart(StructuredDocumentTagRangeStart sdtRangeStart)
{
IndentAndAppendLine("[SdtRangeStart]");
return VisitorAction.Continue;
}
/// <summary>
/// Appelé lorsqu'un nœud de sous-document est rencontré dans le document.
/// </summary>
public override VisitorAction VisitStructuredDocumentTagRangeEnd(StructuredDocumentTagRangeEnd sdtRangeEnd)
{
IndentAndAppendLine("[SdtRangeEnd]");
return VisitorAction.Continue;
}
/// <summary>
/// Ajoutez une ligne au StringBuilder et indentez-la en fonction de la profondeur à laquelle se trouve le visiteur dans l'arborescence du document.
/// </summary>
/// <param name="texte"></param>
private void IndentAndAppendLine(string text)
{
for (int i = 0; i < mDocTraversalDepth; i++) mAcceptingNodeChildTree.Append("| ");
mAcceptingNodeChildTree.AppendLine(text);
}
private int mDocTraversalDepth;
private readonly StringBuilder mAcceptingNodeChildTree;
}
Voir également
- enum VisitorAction
- class DocumentVisitor
- class CompositeNode
- espace de noms Aspose.Words
- Assemblée Aspose.Words