DocumentVisitor

DocumentVisitor class

Özel belge ziyaretçileri için temel sınıf.

Daha fazlasını öğrenmek için şu adresi ziyaret edin:Aspose.Words Belge Nesne Modeli (DOM) dokümantasyon makalesi.

public abstract class DocumentVisitor

yöntemler

İsimTanım
virtual VisitAbsolutePositionTab(AbsolutePositionTab)Şu durumlarda çağrılır:AbsolutePositionTab Belgede düğümle karşılaşıldı.
virtual VisitBodyEnd(Body)Bir bölümdeki ana metin öyküsünün numaralandırılması sona erdiğinde çağrılır.
virtual VisitBodyStart(Body)Bir bölümdeki ana metin öyküsünün numaralandırılması başladığında çağrılır.
virtual VisitBookmarkEnd(BookmarkEnd)Belgede bir yer iminin sonuna gelindiğinde çağrılır.
virtual VisitBookmarkStart(BookmarkStart)Belgede bir yer iminin başlangıcıyla karşılaşıldığında çağrılır.
virtual VisitBuildingBlockEnd(BuildingBlock)Bir yapı taşının numaralandırılması sona erdiğinde çağrılır.
virtual VisitBuildingBlockStart(BuildingBlock)Bir yapı bloğunun numaralandırılması başladığında çağrılır.
virtual VisitCellEnd(Cell)Bir tablo hücresinin numaralandırılması sona erdiğinde çağrılır.
virtual VisitCellStart(Cell)Bir tablo hücresinin numaralandırılması başladığında çağrılır.
virtual VisitCommentEnd(Comment)Bir yorum metninin numaralandırılması sona erdiğinde çağrılır.
virtual VisitCommentRangeEnd(CommentRangeEnd)Yorum yapılan metin aralığının sonuna gelindiğinde çağrılır.
virtual VisitCommentRangeStart(CommentRangeStart)Yorum yapılan bir metin aralığının başlangıcıyla karşılaşıldığında çağrılır.
virtual VisitCommentStart(Comment)Bir yorum metninin numaralandırılması başladığında çağrılır.
virtual VisitDocumentEnd(Document)Belgenin numaralandırılması tamamlandığında çağrılır.
virtual VisitDocumentStart(Document)Belgenin numaralandırılması başladığında çağrılır.
virtual VisitEditableRangeEnd(EditableRangeEnd)Belgede düzenlenebilir bir aralığın sonuna gelindiğinde çağrılır.
virtual VisitEditableRangeStart(EditableRangeStart)Belgede düzenlenebilir bir aralığın başlangıcıyla karşılaşıldığında çağrılır.
virtual VisitFieldEnd(FieldEnd)Belgede bir alan sona erdiğinde çağrılır.
virtual VisitFieldSeparator(FieldSeparator)Belgede alan ayırıcıyla karşılaşıldığında çağrılır.
virtual VisitFieldStart(FieldStart)Belgede bir alan başlatıldığında çağrılır.
virtual VisitFootnoteEnd(Footnote)Dipnot veya sonnot metninin numaralandırılması sona erdiğinde çağrılır.
virtual VisitFootnoteStart(Footnote)Bir dipnot veya sonnot metninin numaralandırılması başladığında çağrılır.
virtual VisitFormField(FormField)Belgede bir form alanıyla karşılaşıldığında çağrılır.
virtual VisitGlossaryDocumentEnd(GlossaryDocument)Bir sözlük belgesinin numaralandırılması sona erdiğinde çağrılır.
virtual VisitGlossaryDocumentStart(GlossaryDocument)Bir sözlük belgesinin numaralandırılması başlatıldığında çağrılır.
virtual VisitGroupShapeEnd(GroupShape)Bir grup şeklinin numaralandırılması sona erdiğinde çağrılır.
virtual VisitGroupShapeStart(GroupShape)Bir grup şeklinin numaralandırılması başladığında çağrılır.
virtual VisitHeaderFooterEnd(HeaderFooter)Bir bölümdeki üstbilgi veya altbilginin numaralandırılması sona erdiğinde çağrılır.
virtual VisitHeaderFooterStart(HeaderFooter)Bir bölümdeki üstbilgi veya altbilginin numaralandırılması başladığında çağrılır.
virtual VisitOfficeMathEnd(OfficeMath)Bir Office Math nesnesinin numaralandırılması sona erdiğinde çağrılır.
virtual VisitOfficeMathStart(OfficeMath)Bir Office Math nesnesinin numaralandırılması başlatıldığında çağrılır.
virtual VisitParagraphEnd(Paragraph)Bir paragrafın numaralandırılması sona erdiğinde çağrılır.
virtual VisitParagraphStart(Paragraph)Bir paragrafın numaralandırılması başladığında çağrılır.
virtual VisitRowEnd(Row)Bir tablo satırının numaralandırılması sona erdiğinde çağrılır.
virtual VisitRowStart(Row)Bir tablo satırının numaralandırılması başladığında çağrılır.
virtual VisitRun(Run)Dosyada bir metin dizisiyle karşılaşıldığında çağrılır.
virtual VisitSectionEnd(Section)Bir bölümün numaralandırılması sona erdiğinde çağrılır.
virtual VisitSectionStart(Section)Bir bölümün numaralandırılması başladığında çağrılır.
virtual VisitShapeEnd(Shape)Bir şeklin numaralandırılması sona erdiğinde çağrılır.
virtual VisitShapeStart(Shape)Bir şeklin numaralandırılması başladığında çağrılır.
virtual VisitSmartTagEnd(SmartTag)Akıllı etiketin numaralandırılması sona erdiğinde çağrılır.
virtual VisitSmartTagStart(SmartTag)Akıllı etiketin numaralandırılması başladığında çağrılır.
virtual VisitSpecialChar(SpecialChar)Şu durumlarda çağrılır:SpecialChar Belgede düğümle karşılaşıldı.
virtual VisitStructuredDocumentTagEnd(StructuredDocumentTag)Yapılandırılmış bir belge etiketinin numaralandırılması sona erdiğinde çağrılır.
virtual VisitStructuredDocumentTagRangeEnd(StructuredDocumentTagRangeEnd)StructuredDocumentTagRangeEnd ile karşılaşıldığında çağrılır.
virtual VisitStructuredDocumentTagRangeStart(StructuredDocumentTagRangeStart)StructuredDocumentTagRangeStart ile karşılaşıldığında çağrılır.
virtual VisitStructuredDocumentTagStart(StructuredDocumentTag)Yapılandırılmış bir belge etiketinin numaralandırılması başlatıldığında çağrılır.
virtual VisitSubDocument(SubDocument)Bir alt belgeyle karşılaşıldığında çağrılır.
virtual VisitTableEnd(Table)Bir tablonun numaralandırılması sona erdiğinde çağrılır.
virtual VisitTableStart(Table)Bir tablonun numaralandırılması başladığında çağrılır.

Notlar

İleDocumentVisitor belge ağacı üzerinde numaralandırma gerektiren özel işlemleri tanımlayabilir ve yürütebilirsiniz.

Örneğin Aspose.Words şunu kullanır:DocumentVisitor kaydetmek için dahili olarakDocument çeşitli formatlarda ve bir belgenin bir parçası üzerinde üzerinde alan veya yer imleri bulma gibi diğer işlemler için.

KullanmakDocumentVisitor:

  1. Türetilmiş bir sınıf oluşturunDocumentVisitor.
  2. Bazı özel işlemleri gerçekleştirmek için VisitXXX method yöntemlerinin bir kısmını veya tamamını geçersiz kılın ve uygulamalar sağlayın.
  3. AramaDüğüm.Kabul Et üzerindeNode that numaralandırmayı başlatmak istediğiniz yer.

DocumentVisitor Yalnızca belirli ziyaretçisi için gereken yöntemlerin geçersiz kılınması gerektiğinden, yeni belge ziyaretçileri oluşturmayı kolaylaştırmak amacıyla tüm VisitXXX yöntemleri için varsayılan uygulamalar sağlar. Tüm ziyaretçi yöntemlerinin geçersiz kılınmasına gerek yoktur.

Daha fazla bilgi için Ziyaretçi tasarım desenine bakın.

Örnekler

Bir belgenin düğüm yapısını yazdırmak için belge ziyaretçisinin nasıl kullanılacağını gösterir.

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

    // Bir belge ziyaretçisini kabul edecek bileşik bir düğüm aldığımızda, ziyaretçi kabul eden düğümü ziyaret eder,
    // ve ardından düğümün tüm alt öğelerini derinlik öncelikli bir şekilde geçer.
    // Ziyaretçi ziyaret edilen her düğümü okuyabilir ve değiştirebilir.
    doc.Accept(visitor);

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

/// <summary>
/// Bir düğümün alt düğüm ağacını geçer.
/// Bu ağacın haritasını dize biçiminde oluşturur.
/// </summary>
public class DocStructurePrinter : DocumentVisitor
{
    public DocStructurePrinter()
    {
        mAcceptingNodeChildTree = new StringBuilder();
    }

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

    /// <summary>
    /// Bir Belge düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override VisitorAction VisitDocumentStart(Document doc)
    {
        int childNodeCount = doc.GetChildNodes(NodeType.Any, true).Count;

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

        // Ziyaretçinin diğer düğümleri ziyaret etmeye devam etmesine izin ver.
        return VisitorAction.Continue;
    }

    /// <summary>
    /// Bir Belge düğümünün tüm alt düğümleri ziyaret edildikten sonra çağrılır.
    /// </summary>
    public override VisitorAction VisitDocumentEnd(Document doc)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[Document end]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Belgede bir Bölüm düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override VisitorAction VisitSectionStart(Section section)
    {
        // Doküman içerisindeki bölümümüzün indeksini alın.
        NodeCollection docSections = section.Document.GetChildNodes(NodeType.Section, false);
        int sectionIndex = docSections.IndexOf(section);

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

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Bir Bölüm düğümünün tüm alt düğümleri ziyaret edildikten sonra çağrılır.
    /// </summary>
    public override VisitorAction VisitSectionEnd(Section section)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[Section end]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Belgede bir Gövde düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override VisitorAction VisitBodyStart(Body body)
    {
        int paragraphCount = body.Paragraphs.Count;
        IndentAndAppendLine("[Body start] Paragraphs: " + paragraphCount);
        mDocTraversalDepth++;

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Bir Gövde düğümünün tüm alt düğümleri ziyaret edildikten sonra çağrılır.
    /// </summary>
    public override VisitorAction VisitBodyEnd(Body body)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[Body end]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Belgede bir Paragraf düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override VisitorAction VisitParagraphStart(Paragraph paragraph)
    {
        IndentAndAppendLine("[Paragraph start]");
        mDocTraversalDepth++;

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Bir Paragraf düğümünün tüm alt düğümleri ziyaret edildikten sonra çağrılır.
    /// </summary>
    public override VisitorAction VisitParagraphEnd(Paragraph paragraph)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[Paragraph end]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Belgede bir Çalıştırma düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override VisitorAction VisitRun(Run run)
    {
        IndentAndAppendLine("[Run] \"" + run.GetText() + "\"");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Belgede bir Alt Belge düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override VisitorAction VisitSubDocument(SubDocument subDocument)
    {
        IndentAndAppendLine("[SubDocument]");

        return VisitorAction.Continue;
    }

    /// <summary>
    /// StringBuilder'a bir satır ekleyin ve ziyaretçinin belge ağacında ne kadar derin olduğuna bağlı olarak onu girintileyin.
    /// </summary>
    /// <param adı="metin"></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;
}

Ayrıca bakınız