Class DocumentVisitor

DocumentVisitor class

Belirtilen düğümde kök ile alt ağaçta yineleme yapmak için soyut sınıf.

public abstract class DocumentVisitor

yöntemler

İsimTanım
virtual VisitAttachedFileEnd(AttachedFile)Ziyaret etmek için sonAttachedFile düğüm.
virtual VisitAttachedFileStart(AttachedFile)Ziyaret etmeye başlayınAttachedFile düğüm.
virtual VisitDocumentEnd(Document)Ziyaret etmek için sonDocument düğüm.
virtual VisitDocumentStart(Document)Ziyaret etmeye başlayınDocument düğüm.
virtual VisitImageEnd(Image)Ziyaret etmek için sonImage düğüm.
virtual VisitImageStart(Image)Ziyaret etmeye başlayınImage düğüm.
virtual VisitOutlineElementEnd(OutlineElement)Ziyaret etmek için sonOutlineElement düğüm.
virtual VisitOutlineElementStart(OutlineElement)Ziyaret etmeye başlayınOutlineElement düğüm.
virtual VisitOutlineEnd(Outline)Ziyaret etmek için sonOutline düğüm.
virtual VisitOutlineGroupEnd(OutlineGroup)Ziyaret etmek için sonOutlineGroup düğüm.
virtual VisitOutlineGroupStart(OutlineGroup)Ziyaret etmeye başlayınOutlineGroup düğüm.
virtual VisitOutlineStart(Outline)Ziyaret etmeye başlayınOutline düğüm.
virtual VisitPageEnd(Page)Ziyaret etmek için sonPage düğüm.
virtual VisitPageStart(Page)Ziyaret etmeye başlayınPage düğüm.
virtual VisitRichTextEnd(RichText)Ziyaret etmek için sonRichText düğüm.
virtual VisitRichTextStart(RichText)Ziyaret etmeye başlayınRichText düğüm.
virtual VisitTableCellEnd(TableCell)Ziyaret etmek için sonTableCell düğüm.
virtual VisitTableCellStart(TableCell)Ziyaret etmeye başlayınTableCell düğüm.
virtual VisitTableEnd(Table)Ziyaret etmek için sonTable düğüm.
virtual VisitTableRowEnd(TableRow)Ziyaret etmek için sonTableRow düğüm.
virtual VisitTableRowStart(TableRow)Ziyaret etmeye başlayınTableRow düğüm.
virtual VisitTableStart(Table)Ziyaret etmeye başlayınTable düğüm.
virtual VisitTitleEnd(Title)Ziyaret etmek için sonTitle düğüm.
virtual VisitTitleStart(Title)Ziyaret etmeye başlayınTitle düğüm.

Örnekler

Ziyaretçi kullanarak bir belgenin içeriğine nasıl erişileceğini gösterir.

public static void Run()
{
    // Belgeler dizininin yolu.
    string dataDir = RunExamples.GetDataDir_LoadingAndSaving();

    // Dönüştürmek istediğimiz belgeyi açın.
    Document doc = new Document(dataDir + "Aspose.one");

    // DocumentVisitor sınıfından miras alan bir nesne oluşturun.
    MyOneNoteToTxtWriter myConverter = new MyOneNoteToTxtWriter();

    // Bu, iyi bilinen Ziyaretçi modelidir. Modelin bir ziyaretçiyi kabul etmesini sağlayın.
    // Model, karşılık gelen yöntemleri çağırarak kendi içinde yinelenir
    // ziyaretçi nesnesinde (buna ziyaret denir).
    //
    // Nesne modelindeki her düğümün Kabul yöntemine sahip olduğuna dikkat edin, böylece ziyaret
    // sadece tüm belge için değil, belgedeki herhangi bir düğüm için yürütülebilir.
    doc.Accept(myConverter);

    // Ziyaret tamamlandığında işlemin sonucunu alabiliriz,
    // bu örnekte ziyaretçide birikmiş olan.
    Console.WriteLine(myConverter.GetText());
    Console.WriteLine(myConverter.NodeCount);            
}

/// <summary>
/// Bir belgeyi düz metin biçiminde kaydetmenin basit uygulaması. Ziyaretçi olarak uygulandı.
/// </summary>
public class MyOneNoteToTxtWriter : DocumentVisitor
{
    public MyOneNoteToTxtWriter()
    {
        nodecount = 0;
        mIsSkipText = false;
        mBuilder = new StringBuilder();
    }

    /// <summary>
    /// Ziyaretçi tarafından toplanan belgenin düz metnini alır.
    /// </summary>
    public string GetText()
    {
        return mBuilder.ToString();
    }

    /// <summary>
    ///Mevcut çıktıya metin ekler. Etkin/devre dışı çıkış bayrağını onurlandırır.
    /// </summary>
    private void AppendText(string text)
    {
        if (!mIsSkipText)
        {
            mBuilder.AppendLine(text);
        }
    }

    /// <summary>
    /// Belgede bir RichText düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override void VisitRichTextStart(RichText run)
    {
        ++nodecount;
        AppendText(run.Text);
    }

    /// <summary>
    /// Belgede bir Belge düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override void VisitDocumentStart(Document document)
    {
        ++nodecount;
    }

    /// <summary>
    /// Belgede bir Sayfa düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override void VisitPageStart(Page page)
    {
        ++nodecount;
        this.AppendText($"*** Page '{page.Title?.TitleText?.Text ?? "(no title)"}' ***");
    }

    /// <summary>
    /// Bir Sayfa düğümünün işlenmesi bittiğinde çağrılır.
    /// </summary>
    public override void VisitPageEnd(Page page)
    {
        this.AppendText(string.Empty);
    }

    /// <summary>
    /// Belgede bir Başlık düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override void VisitTitleStart(Title title)
    {
        ++nodecount;
    }

    /// <summary>
    /// Belgede bir Görüntü düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override void VisitImageStart(Image image)
    {
        ++nodecount;
    }

    /// <summary>
    /// Belgede bir OutlineGroup düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override void VisitOutlineGroupStart(OutlineGroup outlineGroup)
    {
        ++nodecount;
    }

    /// <summary>
    /// Belgede bir Ana Hat düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override void VisitOutlineStart(Outline outline)
    {
        ++nodecount;
    }

    /// <summary>
    /// Belgede bir OutlineElement düğümüyle karşılaşıldığında çağrılır.
    /// </summary>
    public override void VisitOutlineElementStart(OutlineElement outlineElement)
    {
        ++nodecount;
    }

    /// <summary>
    /// Ziyaretçi tarafından toplam düğüm sayısını alır
    /// </summary>
    public Int32 NodeCount
    {
        get { return this.nodecount; }
    }

    private readonly StringBuilder mBuilder;
    private bool mIsSkipText;
    private Int32 nodecount;
}

Ayrıca bakınız