DocumentVisitor

DocumentVisitor class

Classe de base pour les visiteurs de documents personnalisés.

Pour en savoir plus, visitez leModèle objet de document (DOM) Aspose.Words article documentaire.

public abstract class DocumentVisitor

Méthodes

NomLa description
virtual VisitAbsolutePositionTab(AbsolutePositionTab)Appelé lorsqu’unAbsolutePositionTab le nœud est rencontré dans le document.
virtual VisitBodyEnd(Body)Appelé lorsque l’énumération de l’histoire principale d’une section est terminée.
virtual VisitBodyStart(Body)Appelé lorsque l’énumération de l’histoire principale du texte dans une section a commencé.
virtual VisitBookmarkEnd(BookmarkEnd)Appelé lorsqu’une fin de signet est rencontrée dans le document.
virtual VisitBookmarkStart(BookmarkStart)Appelé lorsqu’un début de signet est rencontré dans le document.
virtual VisitBuildingBlockEnd(BuildingBlock)Appelé lorsque l’énumération d’un bloc de construction est terminée.
virtual VisitBuildingBlockStart(BuildingBlock)Appelé lorsque l’énumération d’un bloc de construction a commencé.
virtual VisitCellEnd(Cell)Appelé lorsque l’énumération d’une cellule du tableau est terminée.
virtual VisitCellStart(Cell)Appelé lorsque l’énumération d’une cellule du tableau a commencé.
virtual VisitCommentEnd(Comment)Appelé lorsque l’énumération d’un texte de commentaire est terminée.
virtual VisitCommentRangeEnd(CommentRangeEnd)Appelé lorsque la fin d’une plage de texte commentée est rencontrée.
virtual VisitCommentRangeStart(CommentRangeStart)Appelé lorsque le début d’une plage de texte commentée est rencontré.
virtual VisitCommentStart(Comment)Appelé lorsque l’énumération d’un texte de commentaire a commencé.
virtual VisitDocumentEnd(Document)Appelé lorsque l’énumération du document est terminée.
virtual VisitDocumentStart(Document)Appelé lorsque l’énumération du document a commencé.
virtual VisitEditableRangeEnd(EditableRangeEnd)Appelé lorsqu’une fin d’une plage modifiable est rencontrée dans le document.
virtual VisitEditableRangeStart(EditableRangeStart)Appelé lorsqu’un début d’une plage modifiable est rencontré dans le document.
virtual VisitFieldEnd(FieldEnd)Appelé lorsqu’un champ se termine dans le document.
virtual VisitFieldSeparator(FieldSeparator)Appelé lorsqu’un séparateur de champ est rencontré dans le document.
virtual VisitFieldStart(FieldStart)Appelé lorsqu’un champ commence dans le document.
virtual VisitFootnoteEnd(Footnote)Appelé lorsque l’énumération d’un texte de note de bas de page ou de fin est terminée.
virtual VisitFootnoteStart(Footnote)Appelé lorsque l’énumération d’un texte de note de bas de page ou de fin a commencé.
virtual VisitFormField(FormField)Appelé lorsqu’un champ de formulaire est rencontré dans le document.
virtual VisitGlossaryDocumentEnd(GlossaryDocument)Appelé lorsque l’énumération d’un document glossaire est terminée.
virtual VisitGlossaryDocumentStart(GlossaryDocument)Appelé lorsque l’énumération d’un document glossaire a commencé.
virtual VisitGroupShapeEnd(GroupShape)Appelé lorsque l’énumération d’une forme de groupe est terminée.
virtual VisitGroupShapeStart(GroupShape)Appelé lorsque l’énumération d’une forme de groupe a commencé.
virtual VisitHeaderFooterEnd(HeaderFooter)Appelé lorsque l’énumération d’un en-tête ou d’un pied de page dans une section est terminée.
virtual VisitHeaderFooterStart(HeaderFooter)Appelé lorsque l’énumération d’un en-tête ou d’un pied de page dans une section a commencé.
virtual VisitOfficeMathEnd(OfficeMath)Appelé lorsque l’énumération d’un objet Office Math est terminée.
virtual VisitOfficeMathStart(OfficeMath)Appelé lorsque l’énumération d’un objet Office Math a commencé.
virtual VisitParagraphEnd(Paragraph)Appelé lorsque l’énumération d’un paragraphe est terminée.
virtual VisitParagraphStart(Paragraph)Appelé lorsque l’énumération d’un paragraphe a commencé.
virtual VisitRowEnd(Row)Appelé lorsque l’énumération d’une ligne du tableau est terminée.
virtual VisitRowStart(Row)Appelé lorsque l’énumération d’une ligne du tableau a commencé.
virtual VisitRun(Run)Appelé lorsqu’une série de texte est rencontrée.
virtual VisitSectionEnd(Section)Appelé lorsque l’énumération d’une section est terminée.
virtual VisitSectionStart(Section)Appelé lorsque l’énumération d’une section a commencé.
virtual VisitShapeEnd(Shape)Appelé lorsque l’énumération d’une forme est terminée.
virtual VisitShapeStart(Shape)Appelé lorsque l’énumération d’une forme a commencé.
virtual VisitSmartTagEnd(SmartTag)Appelé lorsque l’énumération d’une balise active est terminée.
virtual VisitSmartTagStart(SmartTag)Appelé lorsque l’énumération d’une balise active a commencé.
virtual VisitSpecialChar(SpecialChar)Appelé lorsqu’unSpecialChar le nœud est rencontré dans le document.
virtual VisitStructuredDocumentTagEnd(StructuredDocumentTag)Appelé lorsque l’énumération d’une balise de document structuré est terminée.
virtual VisitStructuredDocumentTagRangeEnd(StructuredDocumentTagRangeEnd)Appelé lorsqu’un StructuredDocumentTagRangeEnd est rencontré.
virtual VisitStructuredDocumentTagRangeStart(StructuredDocumentTagRangeStart)Appelé lorsqu’un StructuredDocumentTagRangeStart est rencontré.
virtual VisitStructuredDocumentTagStart(StructuredDocumentTag)Appelé lorsque l’énumération d’une balise de document structuré a commencé.
virtual VisitSubDocument(SubDocument)Appelé lorsqu’un sous-document est rencontré.
virtual VisitTableEnd(Table)Appelé lorsque l’énumération d’une table est terminée.
virtual VisitTableStart(Table)Appelé lorsque l’énumération d’une table a commencé.

Remarques

AvecDocumentVisitor vous pouvez définir et exécuter des opérations personnalisées qui nécessitent une énumération dans l’arborescence du document.

Par exemple, Aspose.Words utiliseDocumentVisitor en interne pour économiserDocument dans différents formats et pour d’autres opérations comme rechercher des champs ou des signets sur un fragment d’un document.

UtiliserDocumentVisitor:

  1. Créer une classe dérivée deDocumentVisitor.
  2. Remplacez et fournissez des implémentations pour tout ou partie des méthodes VisitXXX pour effectuer certaines opérations personnalisées.
  3. AppelNoeud.Accepter sur leNode that à partir duquel vous souhaitez commencer l’énumération.

DocumentVisitor fournit des implémentations par défaut pour toutes les méthodes VisitXXX afin de faciliter la création de nouveaux visiteurs de documents, car seules les méthodes requises pour le visiteur particulier doivent être remplacées. Il n’est pas nécessaire de remplacer toutes les méthodes du visiteur.

Pour plus d’informations, consultez le modèle de conception Visiteur.

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 qu'un nœud composite accepte un visiteur de document, le visiteur visite le nœud accepteur,
    // puis parcourt tous les enfants du nœud en profondeur.
    // Le visiteur peut lire et modifier chaque nœud visité.
    doc.Accept(visitor);

    Console.WriteLine(visitor.GetText());
}

/// <summary>
/// Parcourt l'arborescence 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++;

        // Autorise 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)
    {
        // Récupère 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 Paragraph 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 SubDocument est rencontré dans le document.
    /// </summary>
    public override VisitorAction VisitSubDocument(SubDocument subDocument)
    {
        IndentAndAppendLine("[SubDocument]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Ajoutez une ligne au StringBuilder et indentez-la en fonction de la profondeur du visiteur dans l'arborescence du document.
    /// </summary>
    /// <param name="text"></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