Accept
محتويات
[
يخفي
]Footnote.Accept method
يقبل زائرًا.
public override bool Accept(DocumentVisitor visitor)
معامل | يكتب | وصف |
---|---|---|
visitor | DocumentVisitor | الزائر الذي سيقوم بزيارة العقد. |
قيمة الإرجاع
صحيح إذا تمت زيارة جميع العقد؛ خطأ إذاDocumentVisitor
تم إيقاف العملية قبل زيارة كافة العقد.
ملاحظات
يُحصي هذه العقدة وجميع أبنائها. تستدعي كل عقدة طريقة مقابلة علىDocumentVisitor
.
لمزيد من المعلومات راجع نمط تصميم الزائر.
يستدعي DocumentVisitor.VisitFootnoteStart، ثم يستدعي Accept لجميع العقد الفرعية لـ footnote ويستدعي DocumentVisitor.VisitFootnoteEnd في النهاية.
أمثلة
يوضح كيفية طباعة بنية العقدة لكل حاشية سفلية في مستند.
public void FootnoteToText()
{
Document doc = new Document(MyDir + "DocumentVisitor-compatible features.docx");
FootnoteStructurePrinter visitor = new FootnoteStructurePrinter();
// عندما نحصل على عقدة مركبة لقبول زائر مستند، يقوم الزائر بزيارة العقدة المستقبلة،
// ثم يمر عبر جميع أبناء العقدة بطريقة العمق أولاً.
//يمكن للزائر قراءة وتعديل كل عقدة تمت زيارتها.
doc.Accept(visitor);
Console.WriteLine(visitor.GetText());
}
/// <summary>
/// يجتاز شجرة العقد غير الثنائية المكونة من عقد فرعية.
/// إنشاء خريطة في شكل سلسلة من جميع عقد الحواشي السفلية التي تم مواجهتها وأطفالها.
/// </summary>
public class FootnoteStructurePrinter : DocumentVisitor
{
public FootnoteStructurePrinter()
{
mBuilder = new StringBuilder();
mVisitorIsInsideFootnote = false;
}
/// <summary>
/// يحصل على النص العادي للمستند الذي جمعه الزائر.
/// </summary>
public string GetText()
{
return mBuilder.ToString();
}
/// <summary>
/// يتم استدعاؤها عند مواجهة عقدة الحاشية السفلية في المستند.
/// </summary>
public override VisitorAction VisitFootnoteStart(Footnote footnote)
{
IndentAndAppendLine("[Footnote start] Type: " + footnote.FootnoteType);
mDocTraversalDepth++;
mVisitorIsInsideFootnote = true;
return VisitorAction.Continue;
}
/// <summary>
/// يتم استدعاؤها بعد زيارة جميع العقد الفرعية لعقدة الحاشية السفلية.
/// </summary>
public override VisitorAction VisitFootnoteEnd(Footnote footnote)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Footnote end]");
mVisitorIsInsideFootnote = false;
return VisitorAction.Continue;
}
/// <summary>
/// يتم استدعاؤها عند مواجهة عقدة تشغيل في المستند.
/// </summary>
public override VisitorAction VisitRun(Run run)
{
if (mVisitorIsInsideFootnote) IndentAndAppendLine("[Run] \"" + run.GetText() + "\"");
return VisitorAction.Continue;
}
/// <summary>
/// أضف سطرًا إلى StringBuilder وقم بتدويره وفقًا لمدى عمق الزائر في شجرة المستند.
/// </summary>
/// <اسم المعلمة="نص"></param>
private void IndentAndAppendLine(string text)
{
for (int i = 0; i < mDocTraversalDepth; i++) mBuilder.Append("| ");
mBuilder.AppendLine(text);
}
private bool mVisitorIsInsideFootnote;
private int mDocTraversalDepth;
private readonly StringBuilder mBuilder;
}
أنظر أيضا
- class DocumentVisitor
- class Footnote
- مساحة الاسم Aspose.Words.Notes
- المجسم Aspose.Words