DocumentVisitor

DocumentVisitor class

Basklass för besökare av anpassade dokument.

För att lära dig mer, besökAspose.Words-dokumentobjektmodell (DOM) dokumentationsartikel.

public abstract class DocumentVisitor

Metoder

namnBeskrivning
virtual VisitAbsolutePositionTab(AbsolutePositionTab)Anropades när enAbsolutePositionTab nod påträffas i dokumentet.
virtual VisitBodyEnd(Body)Anropas när uppräkningen av huvudtextens berättelse i ett avsnitt är avslutad.
virtual VisitBodyStart(Body)Anropas när uppräkningen av huvudtextens berättelse i ett avsnitt har påbörjats.
virtual VisitBookmarkEnd(BookmarkEnd)Anropas när slutet av ett bokmärke påträffas i dokumentet.
virtual VisitBookmarkStart(BookmarkStart)Anropas när början av ett bokmärke påträffas i dokumentet.
virtual VisitBuildingBlockEnd(BuildingBlock)Anropas när uppräkningen av ett byggblock har avslutats.
virtual VisitBuildingBlockStart(BuildingBlock)Anropas när uppräkningen av ett byggblock har påbörjats.
virtual VisitCellEnd(Cell)Anropas när uppräkningen av en tabellcell är avslutad.
virtual VisitCellStart(Cell)Anropas när uppräkningen av en tabellcell har påbörjats.
virtual VisitCommentEnd(Comment)Anropas när uppräkningen av en kommentartext är avslutad.
virtual VisitCommentRangeEnd(CommentRangeEnd)Anropas när slutet av ett kommenterat textintervall påträffas.
virtual VisitCommentRangeStart(CommentRangeStart)Anropas när början av ett kommenterat textområde påträffas.
virtual VisitCommentStart(Comment)Anropas när uppräkningen av en kommentartext har påbörjats.
virtual VisitDocumentEnd(Document)Anropas när uppräkningen av dokumentet är klar.
virtual VisitDocumentStart(Document)Anropas när uppräkningen av dokumentet har påbörjats.
virtual VisitEditableRangeEnd(EditableRangeEnd)Anropas när slutet av ett redigerbart område påträffas i dokumentet.
virtual VisitEditableRangeStart(EditableRangeStart)Anropas när början av ett redigerbart område påträffas i dokumentet.
virtual VisitFieldEnd(FieldEnd)Anropas när ett fält slutar i dokumentet.
virtual VisitFieldSeparator(FieldSeparator)Anropas när en fältseparator påträffas i dokumentet.
virtual VisitFieldStart(FieldStart)Anropas när ett fält börjar i dokumentet.
virtual VisitFootnoteEnd(Footnote)Anropas när uppräkningen av en fotnots- eller slutnotstext är avslutad.
virtual VisitFootnoteStart(Footnote)Anropas när uppräkningen av en fotnots- eller slutnotstext har påbörjats.
virtual VisitFormField(FormField)Anropas när ett formulärfält påträffas i dokumentet.
virtual VisitGlossaryDocumentEnd(GlossaryDocument)Anropas när uppräkningen av ett ordlistadokument är avslutad.
virtual VisitGlossaryDocumentStart(GlossaryDocument)Anropas när uppräkningen av ett ordlistadokument har påbörjats.
virtual VisitGroupShapeEnd(GroupShape)Anropas när uppräkningen av en gruppform har avslutats.
virtual VisitGroupShapeStart(GroupShape)Anropas när uppräkningen av en gruppform har påbörjats.
virtual VisitHeaderFooterEnd(HeaderFooter)Anropas när uppräkningen av ett sidhuvud eller en sidfot i ett avsnitt har avslutats.
virtual VisitHeaderFooterStart(HeaderFooter)Anropas när uppräkning av ett sidhuvud eller en sidfot i ett avsnitt har påbörjats.
virtual VisitOfficeMathEnd(OfficeMath)Anropas när uppräkningen av ett Office Math-objekt har avslutats.
virtual VisitOfficeMathStart(OfficeMath)Anropas när uppräkningen av ett Office Math-objekt har startat.
virtual VisitParagraphEnd(Paragraph)Anropas när uppräkningen av ett stycke är avslutad.
virtual VisitParagraphStart(Paragraph)Anropas när uppräkningen av ett stycke har påbörjats.
virtual VisitRowEnd(Row)Anropas när uppräkningen av en tabellrad är avslutad.
virtual VisitRowStart(Row)Anropas när uppräkningen av en tabellrad har påbörjats.
virtual VisitRun(Run)Anropas när en textsekvens i påträffas.
virtual VisitSectionEnd(Section)Anropas när uppräkningen av ett avsnitt är avslutad.
virtual VisitSectionStart(Section)Anropas när uppräkningen av ett avsnitt har påbörjats.
virtual VisitShapeEnd(Shape)Anropas när uppräkningen av en form är avslutad.
virtual VisitShapeStart(Shape)Anropas när uppräkningen av en form har påbörjats.
virtual VisitSmartTagEnd(SmartTag)Anropas när uppräkningen av en smarttagg har avslutats.
virtual VisitSmartTagStart(SmartTag)Anropas när uppräkningen av en smarttagg har påbörjats.
virtual VisitSpecialChar(SpecialChar)Anropades när enSpecialChar nod påträffas i dokumentet.
virtual VisitStructuredDocumentTagEnd(StructuredDocumentTag)Anropas när uppräkningen av en strukturerad dokumenttagg har avslutats.
virtual VisitStructuredDocumentTagRangeEnd(StructuredDocumentTagRangeEnd)Anropas när en StructuredDocumentTagRangeEnd påträffas.
virtual VisitStructuredDocumentTagRangeStart(StructuredDocumentTagRangeStart)Anropas när en StructuredDocumentTagRangeStart påträffas.
virtual VisitStructuredDocumentTagStart(StructuredDocumentTag)Anropas när uppräkningen av en strukturerad dokumenttagg har påbörjats.
virtual VisitSubDocument(SubDocument)Anropas när ett deldokument påträffas.
virtual VisitTableEnd(Table)Anropas när uppräkningen av en tabell är avslutad.
virtual VisitTableStart(Table)Anropas när uppräkningen av en tabell har påbörjats.

Anmärkningar

MedDocumentVisitor Du kan definiera och utföra anpassade operationer som kräver uppräkning över dokumentträdet.

Till exempel använder Aspose.WordsDocumentVisitor internt för att sparaDocument i olika format och för andra operationer som att hitta fält eller bokmärken över ett fragment av ett dokument.

Att användaDocumentVisitor:

  1. Skapa en klass som härleds frånDocumentVisitor.
  2. Åsidosätt och tillhandahåll implementeringar för några eller alla VisitXXX-metoder för att utföra vissa anpassade operationer.
  3. SamtalNode.AcceptNode den du vill börja uppräkningen från.

DocumentVisitor tillhandahåller standardimplementeringar för alla VisitXXX-metoder för att göra det enklare att skapa nya dokumentbesökare eftersom endast de metoder som krävs för den specifika -besökaren behöver åsidosättas. Det är inte nödvändigt att åsidosätta alla besökarmetoder.

För mer information, se designmönstret för besökare.

Exempel

Visar hur man använder en dokumentbesökare för att skriva ut ett dokuments nodstruktur.

public void DocStructureToText()
{
    Document doc = new Document(MyDir + "DocumentVisitor-compatible features.docx");
    DocStructurePrinter visitor = new DocStructurePrinter();

    // När vi får en sammansatt nod att acceptera en dokumentbesökare, besöker besökaren den accepterande noden,
    // och sedan korsar alla nodens barn på ett djup-först-sätt.
    // Besökaren kan läsa och ändra varje besökt nod.
    doc.Accept(visitor);

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

/// <summary>
/// Går igenom en nods träd av undernoder.
/// Skapar en karta över detta träd i form av en sträng.
/// </summary>
public class DocStructurePrinter : DocumentVisitor
{
    public DocStructurePrinter()
    {
        mAcceptingNodeChildTree = new StringBuilder();
    }

    public string GetText()
    {
        return mAcceptingNodeChildTree.ToString();
    }

    /// <summary>
    /// Anropas när en dokumentnod påträffas.
    /// </summary>
    public override VisitorAction VisitDocumentStart(Document doc)
    {
        int childNodeCount = doc.GetChildNodes(NodeType.Any, true).Count;

        IndentAndAppendLine("[Document start] Child nodes: " + childNodeCount);
        mDocTraversalDepth++;

        // Tillåt besökaren att fortsätta besöka andra noder.
        return VisitorAction.Continue;
    }

    /// <summary>
    /// Anropas efter att alla undernoder till en dokumentnod har besökts.
    /// </summary>
    public override VisitorAction VisitDocumentEnd(Document doc)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[Document end]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Anropas när en sektionsnod påträffas i dokumentet.
    /// </summary>
    public override VisitorAction VisitSectionStart(Section section)
    {
        // Hämta indexet för vårt avsnitt i dokumentet.
        NodeCollection docSections = section.Document.GetChildNodes(NodeType.Section, false);
        int sectionIndex = docSections.IndexOf(section);

        IndentAndAppendLine("[Section start] Section index: " + sectionIndex);
        mDocTraversalDepth++;

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Anropas efter att alla undernoder till en sektionsnod har besökts.
    /// </summary>
    public override VisitorAction VisitSectionEnd(Section section)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[Section end]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Anropas när en Body-nod påträffas i dokumentet.
    /// </summary>
    public override VisitorAction VisitBodyStart(Body body)
    {
        int paragraphCount = body.Paragraphs.Count;
        IndentAndAppendLine("[Body start] Paragraphs: " + paragraphCount);
        mDocTraversalDepth++;

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Anropas efter att alla undernoder till en Body-nod har besökts.
    /// </summary>
    public override VisitorAction VisitBodyEnd(Body body)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[Body end]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Anropas när en styckenod påträffas i dokumentet.
    /// </summary>
    public override VisitorAction VisitParagraphStart(Paragraph paragraph)
    {
        IndentAndAppendLine("[Paragraph start]");
        mDocTraversalDepth++;

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Anropas efter att alla undernoder till en styckenod har besökts.
    /// </summary>
    public override VisitorAction VisitParagraphEnd(Paragraph paragraph)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[Paragraph end]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Anropas när en Run-nod påträffas i dokumentet.
    /// </summary>
    public override VisitorAction VisitRun(Run run)
    {
        IndentAndAppendLine("[Run] \"" + run.GetText() + "\"");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Anropas när en underdokumentnod påträffas i dokumentet.
    /// </summary>
    public override VisitorAction VisitSubDocument(SubDocument subDocument)
    {
        IndentAndAppendLine("[SubDocument]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Anropas när en underdokumentnod påträffas i dokumentet.
    /// </summary>
    public override VisitorAction VisitStructuredDocumentTagRangeStart(StructuredDocumentTagRangeStart sdtRangeStart)
    {
        IndentAndAppendLine("[SdtRangeStart]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Anropas när en underdokumentnod påträffas i dokumentet.
    /// </summary>
    public override VisitorAction VisitStructuredDocumentTagRangeEnd(StructuredDocumentTagRangeEnd sdtRangeEnd)
    {
        IndentAndAppendLine("[SdtRangeEnd]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Lägg till en rad i StringBuilder och dra in den beroende på hur djupt inne i dokumentträdet besökaren befinner sig.
    /// </summary>
    /// <param namn="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;
}

Se även