VisitFieldSeparator
Contenuti
[
Nascondere
]DocumentVisitor.VisitFieldSeparator method
Chiamato quando viene rilevato un separatore di campo nel documento.
public virtual VisitorAction VisitFieldSeparator(FieldSeparator fieldSeparator)
Parametro | Tipo | Descrizione |
---|---|---|
fieldSeparator | FieldSeparator | L’oggetto che viene visitato. |
Valore di ritorno
UNVisitorAction
valore che specifica come continuare l’enumerazione.
Osservazioni
Il separatore di campo separa il codice di campo dal valore del campo nel documento. Si noti che alcuni campi hanno solo il codice di campo e non hanno separatore di campo né valore di campo.
Per maggiori informazioni vedereVisitFieldStart
Esempi
Mostra come stampare la struttura dei nodi di ogni campo in un documento.
public void FieldToText()
{
Document doc = new Document(MyDir + "DocumentVisitor-compatible features.docx");
FieldStructurePrinter visitor = new FieldStructurePrinter();
// Quando otteniamo che un nodo composito accetti un visitatore del documento, il visitatore visita il nodo accettante,
// e quindi attraversa tutti i nodi figlio in modalità depth-first.
// Il visitatore può leggere e modificare ogni nodo visitato.
doc.Accept(visitor);
Console.WriteLine(visitor.GetText());
}
/// <summary>
/// Attraversa l'albero non binario dei nodi figlio di un nodo.
/// Crea una mappa sotto forma di stringa di tutti i nodi Field rilevati e dei loro figli.
/// </summary>
public class FieldStructurePrinter : DocumentVisitor
{
public FieldStructurePrinter()
{
mBuilder = new StringBuilder();
mVisitorIsInsideField = false;
}
public string GetText()
{
return mBuilder.ToString();
}
/// <summary>
/// Chiamato quando nel documento viene rilevato un nodo Run.
/// </summary>
public override VisitorAction VisitRun(Run run)
{
if (mVisitorIsInsideField) IndentAndAppendLine("[Run] \"" + run.GetText() + "\"");
return VisitorAction.Continue;
}
/// <summary>
/// Chiamato quando nel documento viene rilevato un nodo FieldStart.
/// </summary>
public override VisitorAction VisitFieldStart(FieldStart fieldStart)
{
IndentAndAppendLine("[Field start] FieldType: " + fieldStart.FieldType);
mDocTraversalDepth++;
mVisitorIsInsideField = true;
return VisitorAction.Continue;
}
/// <summary>
/// Chiamato quando nel documento viene rilevato un nodo FieldEnd.
/// </summary>
public override VisitorAction VisitFieldEnd(FieldEnd fieldEnd)
{
mDocTraversalDepth--;
IndentAndAppendLine("[Field end]");
mVisitorIsInsideField = false;
return VisitorAction.Continue;
}
/// <summary>
/// Chiamato quando nel documento viene rilevato un nodo FieldSeparator.
/// </summary>
public override VisitorAction VisitFieldSeparator(FieldSeparator fieldSeparator)
{
IndentAndAppendLine("[FieldSeparator]");
return VisitorAction.Continue;
}
/// <summary>
/// Aggiungi una riga allo StringBuilder e rientrala a seconda della profondità del visitatore
/// nell'albero dei nodi figlio del campo.
/// </summary>
/// <param name="text"></param>
private void IndentAndAppendLine(string text)
{
for (int i = 0; i < mDocTraversalDepth; i++)
{
mBuilder.Append("| ");
}
mBuilder.AppendLine(text);
}
private bool mVisitorIsInsideField;
private int mDocTraversalDepth;
private readonly StringBuilder mBuilder;
}
Guarda anche
- enum VisitorAction
- class FieldSeparator
- class DocumentVisitor
- spazio dei nomi Aspose.Words
- assemblea Aspose.Words