Class DocumentVisitor

DocumentVisitor class

निर्दिष्ट नोड पर रूट के साथ सबट्री के माध्यम से पुनरावृति के लिए सार वर्ग।

public abstract class DocumentVisitor

तरीकों

नामविवरण
virtual VisitAttachedFileEnd(AttachedFile)पर जाना समाप्त करेंAttachedFile नोड.
virtual VisitAttachedFileStart(AttachedFile)पर जाना शुरू करेंAttachedFile नोड.
virtual VisitDocumentEnd(Document)पर जाना समाप्त करेंDocument नोड.
virtual VisitDocumentStart(Document)पर जाना शुरू करेंDocument नोड.
virtual VisitImageEnd(Image)पर जाना समाप्त करेंImage नोड.
virtual VisitImageStart(Image)पर जाना शुरू करेंImage नोड.
virtual VisitOutlineElementEnd(OutlineElement)पर जाना समाप्त करेंOutlineElement नोड.
virtual VisitOutlineElementStart(OutlineElement)पर जाना शुरू करेंOutlineElement नोड.
virtual VisitOutlineEnd(Outline)पर जाना समाप्त करेंOutline नोड.
virtual VisitOutlineGroupEnd(OutlineGroup)पर जाना समाप्त करेंOutlineGroup नोड.
virtual VisitOutlineGroupStart(OutlineGroup)पर जाना शुरू करेंOutlineGroup नोड.
virtual VisitOutlineStart(Outline)पर जाना शुरू करेंOutline नोड.
virtual VisitPageEnd(Page)पर जाना समाप्त करेंPage नोड.
virtual VisitPageStart(Page)पर जाना शुरू करेंPage नोड.
virtual VisitRichTextEnd(RichText)पर जाना समाप्त करेंRichText नोड.
virtual VisitRichTextStart(RichText)पर जाना शुरू करेंRichText नोड.
virtual VisitTableCellEnd(TableCell)पर जाना समाप्त करेंTableCell नोड.
virtual VisitTableCellStart(TableCell)पर जाना शुरू करेंTableCell नोड.
virtual VisitTableEnd(Table)पर जाना समाप्त करेंTable नोड.
virtual VisitTableRowEnd(TableRow)पर जाना समाप्त करेंTableRow नोड.
virtual VisitTableRowStart(TableRow)पर जाना शुरू करेंTableRow नोड.
virtual VisitTableStart(Table)पर जाना शुरू करेंTable नोड.
virtual VisitTitleEnd(Title)पर जाना समाप्त करेंTitle नोड.
virtual VisitTitleStart(Title)पर जाना शुरू करेंTitle नोड.

उदाहरण

विज़िटर का उपयोग करके किसी दस्तावेज़ की सामग्री तक पहुँचने का तरीका दिखाता है।

public static void Run()
{
    // दस्तावेज़ निर्देशिका का पथ।
    string dataDir = RunExamples.GetDataDir_LoadingAndSaving();

    // वह दस्तावेज़ खोलें जिसे हम कनवर्ट करना चाहते हैं।
    Document doc = new Document(dataDir + "Aspose.one");

    // एक ऐसी वस्तु बनाएँ जो DocumentVisitor वर्ग से विरासत में मिली हो।
    MyOneNoteToTxtWriter myConverter = new MyOneNoteToTxtWriter();

    // यह प्रसिद्ध विज़िटर पैटर्न है। एक आगंतुक को स्वीकार करने के लिए मॉडल प्राप्त करें।
    // संबंधित विधियों को कॉल करके मॉडल स्वयं के माध्यम से पुनरावृति करेगा
    // विज़िटर ऑब्जेक्ट पर (इसे विज़िटिंग कहा जाता है)।
    //
    // ध्यान दें कि ऑब्जेक्ट मॉडल में प्रत्येक नोड में एक्सेप्ट मेथड है इसलिए विजिटिंग
    // न केवल पूरे दस्तावेज़ के लिए, बल्कि दस्तावेज़ में किसी भी नोड के लिए निष्पादित किया जा सकता है।
    doc.Accept(myConverter);

    // एक बार दौरा पूरा हो जाने के बाद, हम ऑपरेशन के परिणाम को पुनः प्राप्त कर सकते हैं,
    // कि इस उदाहरण में, विज़िटर में जमा हो गया है।
    Console.WriteLine(myConverter.GetText());
    Console.WriteLine(myConverter.NodeCount);            
}

/// <summary>
/// सादे पाठ प्रारूप में दस्तावेज़ को सहेजने का सरल कार्यान्वयन। एक आगंतुक के रूप में लागू किया गया।
/// </summary>
public class MyOneNoteToTxtWriter : DocumentVisitor
{
    public MyOneNoteToTxtWriter()
    {
        nodecount = 0;
        mIsSkipText = false;
        mBuilder = new StringBuilder();
    }

    /// <summary>
    /// आगंतुक द्वारा जमा किए गए दस्तावेज़ का सादा पाठ प्राप्त करता है।
    /// </summary>
    public string GetText()
    {
        return mBuilder.ToString();
    }

    /// <summary>
    /// वर्तमान आउटपुट में टेक्स्ट जोड़ता है। सक्षम/अक्षम आउटपुट फ़्लैग का सम्मान करता है।
    /// </summary>
    private void AppendText(string text)
    {
        if (!mIsSkipText)
        {
            mBuilder.AppendLine(text);
        }
    }

    /// <summary>
    /// जब दस्तावेज़ में एक RichText नोड का सामना किया जाता है तो कॉल किया जाता है।
    /// </summary>
    public override void VisitRichTextStart(RichText run)
    {
        ++nodecount;
        AppendText(run.Text);
    }

    /// <summary>
    /// जब दस्तावेज़ में दस्तावेज़ नोड का सामना किया जाता है तो कॉल किया जाता है।
    /// </summary>
    public override void VisitDocumentStart(Document document)
    {
        ++nodecount;
    }

    /// <summary>
    /// कॉल किया जाता है जब दस्तावेज़ में पृष्ठ नोड का सामना होता है।
    /// </summary>
    public override void VisitPageStart(Page page)
    {
        ++nodecount;
        this.AppendText($"*** Page '{page.Title?.TitleText?.Text ?? "(no title)"}' ***");
    }

    /// <summary>
    /// पेज नोड की प्रोसेसिंग समाप्त होने पर कॉल किया जाता है।
    /// </summary>
    public override void VisitPageEnd(Page page)
    {
        this.AppendText(string.Empty);
    }

    /// <summary>
    /// जब दस्तावेज़ में शीर्षक नोड का सामना किया जाता है तो कॉल किया जाता है।
    /// </summary>
    public override void VisitTitleStart(Title title)
    {
        ++nodecount;
    }

    /// <summary>
    /// दस्तावेज़ में एक छवि नोड का सामना करने पर कॉल किया जाता है।
    /// </summary>
    public override void VisitImageStart(Image image)
    {
        ++nodecount;
    }

    /// <summary>
    /// कॉल किया जाता है जब दस्तावेज़ में एक OutlineGroup नोड का सामना होता है।
    /// </summary>
    public override void VisitOutlineGroupStart(OutlineGroup outlineGroup)
    {
        ++nodecount;
    }

    /// <summary>
    /// कॉल किया जाता है जब दस्तावेज़ में एक रूपरेखा नोड का सामना करना पड़ता है।
    /// </summary>
    public override void VisitOutlineStart(Outline outline)
    {
        ++nodecount;
    }

    /// <summary>
    /// कॉल किया जाता है जब दस्तावेज़ में एक OutlineElement नोड का सामना होता है।
    /// </summary>
    public override void VisitOutlineElementStart(OutlineElement outlineElement)
    {
        ++nodecount;
    }

    /// <summary>
    /// विज़िटर द्वारा नोड्स की कुल संख्या प्राप्त करता है
    /// </summary>
    public Int32 NodeCount
    {
        get { return this.nodecount; }
    }

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

यह सभी देखें