DocumentVisitor
DocumentVisitor class
Basisklasse für benutzerdefinierte Dokumentbesucher.
Um mehr zu erfahren, besuchen Sie dieAspose.Words Dokumentobjektmodell (DOM) Dokumentationsartikel.
public abstract class DocumentVisitor
Methoden
Name | Beschreibung |
---|---|
virtual VisitAbsolutePositionTab(AbsolutePositionTab) | Wird aufgerufen, wenn einAbsolutePositionTab Knoten wurde im Dokument gefunden. |
virtual VisitBodyEnd(Body) | Wird aufgerufen, wenn die Aufzählung der Haupttextgeschichte in einem Abschnitt beendet ist. |
virtual VisitBodyStart(Body) | Wird aufgerufen, wenn mit der Aufzählung der Haupttextgeschichte in einem Abschnitt begonnen wurde. |
virtual VisitBookmarkEnd(BookmarkEnd) | Wird aufgerufen, wenn im Dokument das Ende eines Lesezeichens erreicht wird. |
virtual VisitBookmarkStart(BookmarkStart) | Wird aufgerufen, wenn im Dokument der Anfang eines Lesezeichens gefunden wird. |
virtual VisitBuildingBlockEnd(BuildingBlock) | Wird aufgerufen, wenn die Aufzählung eines Bausteins beendet ist. |
virtual VisitBuildingBlockStart(BuildingBlock) | Wird aufgerufen, wenn die Aufzählung eines Bausteins begonnen hat. |
virtual VisitCellEnd(Cell) | Wird aufgerufen, wenn die Aufzählung einer Tabellenzelle beendet ist. |
virtual VisitCellStart(Cell) | Wird aufgerufen, wenn mit der Aufzählung einer Tabellenzelle begonnen wurde. |
virtual VisitCommentEnd(Comment) | Wird aufgerufen, wenn die Aufzählung eines Kommentartextes beendet ist. |
virtual VisitCommentRangeEnd(CommentRangeEnd) | Wird aufgerufen, wenn das Ende eines kommentierten Textbereichs erreicht wird. |
virtual VisitCommentRangeStart(CommentRangeStart) | Wird aufgerufen, wenn der Anfang eines kommentierten Textbereichs erreicht wird. |
virtual VisitCommentStart(Comment) | Wird aufgerufen, wenn mit der Aufzählung eines Kommentartextes begonnen wurde. |
virtual VisitDocumentEnd(Document) | Wird aufgerufen, wenn die Enumeration des Dokuments abgeschlossen ist. |
virtual VisitDocumentStart(Document) | Wird aufgerufen, wenn die Enumeration des Dokuments begonnen hat. |
virtual VisitEditableRangeEnd(EditableRangeEnd) | Wird aufgerufen, wenn im Dokument das Ende eines bearbeitbaren Bereichs erreicht wird. |
virtual VisitEditableRangeStart(EditableRangeStart) | Wird aufgerufen, wenn im Dokument der Anfang eines bearbeitbaren Bereichs gefunden wird. |
virtual VisitFieldEnd(FieldEnd) | Wird aufgerufen, wenn ein Feld im Dokument endet. |
virtual VisitFieldSeparator(FieldSeparator) | Wird aufgerufen, wenn im Dokument ein Feldtrennzeichen gefunden wird. |
virtual VisitFieldStart(FieldStart) | Wird aufgerufen, wenn ein Feld im Dokument beginnt. |
virtual VisitFootnoteEnd(Footnote) | Wird aufgerufen, wenn die Aufzählung eines Fußnoten- oder Endnotentextes beendet ist. |
virtual VisitFootnoteStart(Footnote) | Wird aufgerufen, wenn mit der Aufzählung eines Fußnoten- oder Endnotentextes begonnen wurde. |
virtual VisitFormField(FormField) | Wird aufgerufen, wenn im Dokument ein Formularfeld gefunden wird. |
virtual VisitGlossaryDocumentEnd(GlossaryDocument) | Wird aufgerufen, wenn die Aufzählung eines Glossardokuments beendet ist. |
virtual VisitGlossaryDocumentStart(GlossaryDocument) | Wird aufgerufen, wenn mit der Aufzählung eines Glossardokuments begonnen wurde. |
virtual VisitGroupShapeEnd(GroupShape) | Wird aufgerufen, wenn die Aufzählung einer Gruppenform beendet ist. |
virtual VisitGroupShapeStart(GroupShape) | Wird aufgerufen, wenn die Aufzählung einer Gruppenform begonnen hat. |
virtual VisitHeaderFooterEnd(HeaderFooter) | Wird aufgerufen, wenn die Aufzählung einer Kopf- oder Fußzeile in einem Abschnitt beendet ist. |
virtual VisitHeaderFooterStart(HeaderFooter) | Wird aufgerufen, wenn mit der Aufzählung einer Kopf- oder Fußzeile in einem Abschnitt begonnen wurde. |
virtual VisitOfficeMathEnd(OfficeMath) | Wird aufgerufen, wenn die Enumeration eines Office Math-Objekts beendet ist. |
virtual VisitOfficeMathStart(OfficeMath) | Wird aufgerufen, wenn die Enumeration eines Office Math-Objekts begonnen hat. |
virtual VisitParagraphEnd(Paragraph) | Wird aufgerufen, wenn die Aufzählung eines Absatzes beendet ist. |
virtual VisitParagraphStart(Paragraph) | Wird aufgerufen, wenn mit der Aufzählung eines Absatzes begonnen wurde. |
virtual VisitRowEnd(Row) | Wird aufgerufen, wenn die Aufzählung einer Tabellenzeile beendet ist. |
virtual VisitRowStart(Row) | Wird aufgerufen, wenn mit der Aufzählung einer Tabellenzeile begonnen wurde. |
virtual VisitRun(Run) | Wird aufgerufen, wenn ein Textabschnitt darin gefunden wird. |
virtual VisitSectionEnd(Section) | Wird aufgerufen, wenn die Aufzählung eines Abschnitts beendet ist. |
virtual VisitSectionStart(Section) | Wird aufgerufen, wenn mit der Aufzählung eines Abschnitts begonnen wurde. |
virtual VisitShapeEnd(Shape) | Wird aufgerufen, wenn die Aufzählung einer Form beendet ist. |
virtual VisitShapeStart(Shape) | Wird aufgerufen, wenn die Aufzählung einer Form begonnen hat. |
virtual VisitSmartTagEnd(SmartTag) | Wird aufgerufen, wenn die Enumeration eines Smarttags beendet ist. |
virtual VisitSmartTagStart(SmartTag) | Wird aufgerufen, wenn die Enumeration eines Smarttags begonnen hat. |
virtual VisitSpecialChar(SpecialChar) | Wird aufgerufen, wenn einSpecialChar Knoten wurde im Dokument gefunden. |
virtual VisitStructuredDocumentTagEnd(StructuredDocumentTag) | Wird aufgerufen, wenn die Aufzählung eines strukturierten Dokument-Tags beendet ist. |
virtual VisitStructuredDocumentTagRangeEnd(StructuredDocumentTagRangeEnd) | Wird aufgerufen, wenn ein StructuredDocumentTagRangeEnd gefunden wird. |
virtual VisitStructuredDocumentTagRangeStart(StructuredDocumentTagRangeStart) | Wird aufgerufen, wenn ein StructuredDocumentTagRangeStart gefunden wird. |
virtual VisitStructuredDocumentTagStart(StructuredDocumentTag) | Wird aufgerufen, wenn die Aufzählung eines strukturierten Dokument-Tags begonnen hat. |
virtual VisitSubDocument(SubDocument) | Wird aufgerufen, wenn ein Unterdokument gefunden wird. |
virtual VisitTableEnd(Table) | Wird aufgerufen, wenn die Aufzählung einer Tabelle beendet ist. |
virtual VisitTableStart(Table) | Wird aufgerufen, wenn die Enumeration einer Tabelle begonnen hat. |
Bemerkungen
MitDocumentVisitor
Sie können benutzerdefinierte Operationen definieren und ausführen, die eine Aufzählung des Dokumentbaums erfordern.
Beispielsweise verwendet Aspose.WordsDocumentVisitor
intern zum SpeichernDocument
in verschiedenen Formaten und für andere Vorgänge wie das Suchen von Feldern oder Lesezeichen über einem Dokumentfragment.
AnwendungDocumentVisitor
:
- Erstellen Sie eine Klasse, abgeleitet von
DocumentVisitor
. - Überschreiben und stellen Sie Implementierungen für einige oder alle VisitXXX-Methoden bereit, um einige benutzerdefinierte Vorgänge auszuführen.
- Anruf
Knoten.Akzeptieren
auf derNode
das , bei dem Sie die Aufzählung beginnen möchten.
DocumentVisitor
Bietet Standardimplementierungen für alle VisitXXX-Methoden , um das Erstellen neuer Dokumentbesucher zu vereinfachen, da nur die für den jeweiligen -Besucher erforderlichen Methoden überschrieben werden müssen. Es ist nicht erforderlich, alle Besuchermethoden zu überschreiben.
Weitere Informationen finden Sie im Visitor-Entwurfsmuster.
Beispiele
Zeigt, wie Sie mit einem Dokumentbesucher die Knotenstruktur eines Dokuments drucken.
public void DocStructureToText()
{
Document doc = new Document(MyDir + "DocumentVisitor-compatible features.docx");
DocStructurePrinter visitor = new DocStructurePrinter();
// Wenn wir einen zusammengesetzten Knoten dazu bringen, einen Dokumentbesucher zu akzeptieren, besucht der Besucher den akzeptierenden Knoten.
// und durchläuft dann alle untergeordneten Knoten in einer Tiefensuche.
// Der Besucher kann jeden besuchten Knoten lesen und ändern.
doc.Accept(visitor);
Console.WriteLine(visitor.GetText());
}
/// <summary>
/// Durchläuft den Baum der untergeordneten Knoten eines Knotens.
/// Erstellt eine Karte dieses Baums in Form einer Zeichenfolge.
/// </summary>
public class DocStructurePrinter : DocumentVisitor
{
public DocStructurePrinter()
{
mAcceptingNodeChildTree = new StringBuilder();
}
public string GetText()
{
return mAcceptingNodeChildTree.ToString();
}
/// <summary>
/// Wird aufgerufen, wenn ein Dokumentknoten gefunden wird.
/// </summary>
public override VisitorAction VisitDocumentStart(Document doc)
{
int childNodeCount = doc.GetChildNodes(NodeType.Any, true).Count;
IndentAndAppendLine("[Document start] Child nodes: " + childNodeCount);
mDocTraversalDepth++;
// Dem Besucher erlauben, weiterhin andere Knoten zu besuchen.
return VisitorAction.Continue;
}
/// <summary>
/// Wird aufgerufen, nachdem alle untergeordneten Knoten eines Dokumentknotens besucht wurden.
/// </summary>
public override VisitorAction VisitDocumentEnd(Document doc)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Document end]");
return VisitorAction.Continue;
}
/// <summary>
/// Wird aufgerufen, wenn im Dokument ein Abschnittsknoten gefunden wird.
/// </summary>
public override VisitorAction VisitSectionStart(Section section)
{
// Holen Sie sich den Index unseres Abschnitts innerhalb des Dokuments.
NodeCollection docSections = section.Document.GetChildNodes(NodeType.Section, false);
int sectionIndex = docSections.IndexOf(section);
IndentAndAppendLine("[Section start] Section index: " + sectionIndex);
mDocTraversalDepth++;
return VisitorAction.Continue;
}
/// <summary>
/// Wird aufgerufen, nachdem alle untergeordneten Knoten eines Abschnittsknotens besucht wurden.
/// </summary>
public override VisitorAction VisitSectionEnd(Section section)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Section end]");
return VisitorAction.Continue;
}
/// <summary>
/// Wird aufgerufen, wenn im Dokument ein Body-Knoten gefunden wird.
/// </summary>
public override VisitorAction VisitBodyStart(Body body)
{
int paragraphCount = body.Paragraphs.Count;
IndentAndAppendLine("[Body start] Paragraphs: " + paragraphCount);
mDocTraversalDepth++;
return VisitorAction.Continue;
}
/// <summary>
/// Wird aufgerufen, nachdem alle untergeordneten Knoten eines Body-Knotens besucht wurden.
/// </summary>
public override VisitorAction VisitBodyEnd(Body body)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Body end]");
return VisitorAction.Continue;
}
/// <summary>
/// Wird aufgerufen, wenn im Dokument ein Absatzknoten gefunden wird.
/// </summary>
public override VisitorAction VisitParagraphStart(Paragraph paragraph)
{
IndentAndAppendLine("[Paragraph start]");
mDocTraversalDepth++;
return VisitorAction.Continue;
}
/// <summary>
/// Wird aufgerufen, nachdem alle untergeordneten Knoten eines Absatzknotens besucht wurden.
/// </summary>
public override VisitorAction VisitParagraphEnd(Paragraph paragraph)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Paragraph end]");
return VisitorAction.Continue;
}
/// <summary>
/// Wird aufgerufen, wenn im Dokument ein Run-Knoten gefunden wird.
/// </summary>
public override VisitorAction VisitRun(Run run)
{
IndentAndAppendLine("[Run] \"" + run.GetText() + "\"");
return VisitorAction.Continue;
}
/// <summary>
/// Wird aufgerufen, wenn im Dokument ein SubDocument-Knoten gefunden wird.
/// </summary>
public override VisitorAction VisitSubDocument(SubDocument subDocument)
{
IndentAndAppendLine("[SubDocument]");
return VisitorAction.Continue;
}
/// <summary>
/// Wird aufgerufen, wenn im Dokument ein SubDocument-Knoten gefunden wird.
/// </summary>
public override VisitorAction VisitStructuredDocumentTagRangeStart(StructuredDocumentTagRangeStart sdtRangeStart)
{
IndentAndAppendLine("[SdtRangeStart]");
return VisitorAction.Continue;
}
/// <summary>
/// Wird aufgerufen, wenn im Dokument ein SubDocument-Knoten gefunden wird.
/// </summary>
public override VisitorAction VisitStructuredDocumentTagRangeEnd(StructuredDocumentTagRangeEnd sdtRangeEnd)
{
IndentAndAppendLine("[SdtRangeEnd]");
return VisitorAction.Continue;
}
/// <summary>
/// Fügen Sie dem StringBuilder eine Zeile hinzu und rücken Sie sie ein, je nachdem, wie tief der Besucher im Dokumentbaum ist.
/// </summary>
/// <param name="text"></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;
}
Siehe auch
- namensraum Aspose.Words
- Montage Aspose.Words