Accept
Innehåll
[
Dölj
]Footnote.Accept method
Tar emot en besökare.
public override bool Accept(DocumentVisitor visitor)
| Parameter | Typ | Beskrivning |
|---|---|---|
| visitor | DocumentVisitor | Besökaren som kommer att besöka noderna. |
Returvärde
Sant om alla noder besöktes; falskt omDocumentVisitor stoppade operationen innan alla noder besöktes.
Anmärkningar
Räknar upp denna nod och alla dess underordnade noder. Varje nod anropar en motsvarande metod.DocumentVisitor.
För mer information, se designmönstret för besökare.
Anropar DocumentVisitor.VisitFootnoteStart, anropar sedan Accept för alla undernoder till footnote och anropar DocumentVisitor.VisitFootnoteEnd i slutet.
Exempel
Visar hur man skriver ut nodstrukturen för varje fotnot i ett dokument.
public void FootnoteToText()
{
Document doc = new Document(MyDir + "DocumentVisitor-compatible features.docx");
FootnoteStructurePrinter visitor = new FootnoteStructurePrinter();
// När vi får en sammansatt nod att acceptera en dokumentbesökare, besöker besökaren den accepterande noden,
// och sedan korsar alla nodens barn på ett djup-först-sätt.
// Besökaren kan läsa och ändra varje besökt nod.
doc.Accept(visitor);
Console.WriteLine(visitor.GetText());
}
/// <summary>
/// Går igenom en nods icke-binära träd av undernoder.
/// Skapar en karta i form av en sträng av alla påträffade fotnotsnoder och deras undernoder.
/// </summary>
public class FootnoteStructurePrinter : DocumentVisitor
{
public FootnoteStructurePrinter()
{
mBuilder = new StringBuilder();
mVisitorIsInsideFootnote = false;
}
/// <summary>
/// Hämtar klartexten från dokumentet som besökaren samlade in.
/// </summary>
public string GetText()
{
return mBuilder.ToString();
}
/// <summary>
/// Anropas när en fotnotsnod påträffas i dokumentet.
/// </summary>
public override VisitorAction VisitFootnoteStart(Footnote footnote)
{
IndentAndAppendLine("[Footnote start] Type: " + footnote.FootnoteType);
mDocTraversalDepth++;
mVisitorIsInsideFootnote = true;
return VisitorAction.Continue;
}
/// <summary>
/// Anropas efter att alla undernoder till en fotnotsnod har besökts.
/// </summary>
public override VisitorAction VisitFootnoteEnd(Footnote footnote)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Footnote end]");
mVisitorIsInsideFootnote = false;
return VisitorAction.Continue;
}
/// <summary>
/// Anropas när en Run-nod påträffas i dokumentet.
/// </summary>
public override VisitorAction VisitRun(Run run)
{
if (mVisitorIsInsideFootnote) IndentAndAppendLine("[Run] \"" + run.GetText() + "\"");
return VisitorAction.Continue;
}
/// <summary>
/// Lägg till en rad i StringBuilder och dra in den beroende på hur djupt inne i dokumentträdet besökaren befinner sig.
/// </summary>
/// <param namn="text"></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;
}
Se även
- class DocumentVisitor
- class Footnote
- namnutrymme Aspose.Words.Notes
- hopsättning Aspose.Words