VisitDocumentEnd
محتويات
[
يخفي
]DocumentVisitor.VisitDocumentEnd method
يتم استدعاؤها عند انتهاء تعداد المستند.
public virtual VisitorAction VisitDocumentEnd(Document doc)
| معامل | يكتب | وصف | 
|---|---|---|
| doc | Document | الشيء الذي يتم زيارته. | 
قيمة الإرجاع
أVisitorAction القيمة التي تحدد كيفية مواصلة التعداد.
أمثلة
يوضح كيفية استخدام زائر المستند لطباعة بنية عقدة المستند.
public void DocStructureToText()
{
    Document doc = new Document(MyDir + "DocumentVisitor-compatible features.docx");
    DocStructurePrinter visitor = new DocStructurePrinter();
    // عندما نحصل على عقدة مركبة لقبول زائر مستند، يقوم الزائر بزيارة العقدة المستقبلة،
    // ثم يمر عبر جميع أبناء العقدة بطريقة العمق أولاً.
    //يمكن للزائر قراءة وتعديل كل عقدة تمت زيارتها.
    doc.Accept(visitor);
    Console.WriteLine(visitor.GetText());
}
/// <summary>
/// يجتاز شجرة العقد الفرعية للعقدة.
/// إنشاء خريطة لهذه الشجرة في شكل سلسلة.
/// </summary>
public class DocStructurePrinter : DocumentVisitor
{
    public DocStructurePrinter()
    {
        mAcceptingNodeChildTree = new StringBuilder();
    }
    public string GetText()
    {
        return mAcceptingNodeChildTree.ToString();
    }
    /// <summary>
    /// يتم استدعاؤها عند مواجهة عقدة مستند.
    /// </summary>
    public override VisitorAction VisitDocumentStart(Document doc)
    {
        int childNodeCount = doc.GetChildNodes(NodeType.Any, true).Count;
        IndentAndAppendLine("[Document start] Child nodes: " + childNodeCount);
        mDocTraversalDepth++;
        //السماح للزائر بمواصلة زيارة العقد الأخرى.
        return VisitorAction.Continue;
    }
    /// <summary>
    /// يتم استدعاؤها بعد زيارة جميع العقد الفرعية لعقدة المستند.
    /// </summary>
    public override VisitorAction VisitDocumentEnd(Document doc)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[Document end]");
        return VisitorAction.Continue;
    }
    /// <summary>
    /// يتم استدعاؤها عند مواجهة عقدة قسم في المستند.
    /// </summary>
    public override VisitorAction VisitSectionStart(Section section)
    {
        // احصل على فهرس قسمنا داخل المستند.
        NodeCollection docSections = section.Document.GetChildNodes(NodeType.Section, false);
        int sectionIndex = docSections.IndexOf(section);
        IndentAndAppendLine("[Section start] Section index: " + sectionIndex);
        mDocTraversalDepth++;
        return VisitorAction.Continue;
    }
    /// <summary>
    /// يتم استدعاؤها بعد زيارة جميع العقد الفرعية لعقدة القسم.
    /// </summary>
    public override VisitorAction VisitSectionEnd(Section section)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[Section end]");
        return VisitorAction.Continue;
    }
    /// <summary>
    /// يتم استدعاؤها عند مواجهة عقدة نصية في المستند.
    /// </summary>
    public override VisitorAction VisitBodyStart(Body body)
    {
        int paragraphCount = body.Paragraphs.Count;
        IndentAndAppendLine("[Body start] Paragraphs: " + paragraphCount);
        mDocTraversalDepth++;
        return VisitorAction.Continue;
    }
    /// <summary>
    /// يتم استدعاؤها بعد زيارة جميع العقد الفرعية لعقدة الجسم.
    /// </summary>
    public override VisitorAction VisitBodyEnd(Body body)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[Body end]");
        return VisitorAction.Continue;
    }
    /// <summary>
    /// يتم استدعاؤها عند مواجهة عقدة فقرة في المستند.
    /// </summary>
    public override VisitorAction VisitParagraphStart(Paragraph paragraph)
    {
        IndentAndAppendLine("[Paragraph start]");
        mDocTraversalDepth++;
        return VisitorAction.Continue;
    }
    /// <summary>
    /// يتم استدعاؤها بعد زيارة جميع العقد الفرعية لعقدة الفقرة.
    /// </summary>
    public override VisitorAction VisitParagraphEnd(Paragraph paragraph)
    {
        mDocTraversalDepth--;
        IndentAndAppendLine("[Paragraph end]");
        return VisitorAction.Continue;
    }
    /// <summary>
    /// يتم استدعاؤها عند مواجهة عقدة تشغيل في المستند.
    /// </summary>
    public override VisitorAction VisitRun(Run run)
    {
        IndentAndAppendLine("[Run] \"" + run.GetText() + "\"");
        return VisitorAction.Continue;
    }
    /// <summary>
    /// يتم استدعاؤها عند مواجهة عقدة SubDocument في المستند.
    /// </summary>
    public override VisitorAction VisitSubDocument(SubDocument subDocument)
    {
        IndentAndAppendLine("[SubDocument]");
        return VisitorAction.Continue;
    }
    /// <summary>
    /// يتم استدعاؤها عند مواجهة عقدة SubDocument في المستند.
    /// </summary>
    public override VisitorAction VisitStructuredDocumentTagRangeStart(StructuredDocumentTagRangeStart sdtRangeStart)
    {
        IndentAndAppendLine("[SdtRangeStart]");
        return VisitorAction.Continue;
    }
    /// <summary>
    /// يتم استدعاؤها عند مواجهة عقدة SubDocument في المستند.
    /// </summary>
    public override VisitorAction VisitStructuredDocumentTagRangeEnd(StructuredDocumentTagRangeEnd sdtRangeEnd)
    {
        IndentAndAppendLine("[SdtRangeEnd]");
        return VisitorAction.Continue;
    }
    /// <summary>
    /// أضف سطرًا إلى StringBuilder وقم بتدويره وفقًا لمدى عمق الزائر في شجرة المستند.
    /// </summary>
    /// <اسم المعلمة="نص"></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;
}
أنظر أيضا
- enum VisitorAction
- class Document
- class DocumentVisitor
- مساحة الاسم Aspose.Words
- المجسم Aspose.Words