Class DocumentVisitor
내용물
[
숨다
]DocumentVisitor class
지정된 노드에서 루트가 있는 하위 트리를 통해 반복하기 위한 추상 클래스입니다.
public abstract class DocumentVisitor
행동 양식
이름 | 설명 |
---|---|
virtual VisitAttachedFileEnd(AttachedFile) | 방문 종료AttachedFile 노드. |
virtual VisitAttachedFileStart(AttachedFile) | 방문 시작AttachedFile 노드. |
virtual VisitDocumentEnd(Document) | 방문 종료Document 노드. |
virtual VisitDocumentStart(Document) | 방문 시작Document 노드. |
virtual VisitImageEnd(Image) | 방문 종료Image 노드. |
virtual VisitImageStart(Image) | 방문 시작Image 노드. |
virtual VisitOutlineElementEnd(OutlineElement) | 방문 종료OutlineElement 노드. |
virtual VisitOutlineElementStart(OutlineElement) | 방문 시작OutlineElement 노드. |
virtual VisitOutlineEnd(Outline) | 방문 종료Outline 노드. |
virtual VisitOutlineGroupEnd(OutlineGroup) | 방문 종료OutlineGroup 노드. |
virtual VisitOutlineGroupStart(OutlineGroup) | 방문 시작OutlineGroup 노드. |
virtual VisitOutlineStart(Outline) | 방문 시작Outline 노드. |
virtual VisitPageEnd(Page) | 방문 종료Page 노드. |
virtual VisitPageStart(Page) | 방문 시작Page 노드. |
virtual VisitRichTextEnd(RichText) | 방문 종료RichText 노드. |
virtual VisitRichTextStart(RichText) | 방문 시작RichText 노드. |
virtual VisitTableCellEnd(TableCell) | 방문 종료TableCell 노드. |
virtual VisitTableCellStart(TableCell) | 방문 시작TableCell 노드. |
virtual VisitTableEnd(Table) | 방문 종료Table 노드. |
virtual VisitTableRowEnd(TableRow) | 방문 종료TableRow 노드. |
virtual VisitTableRowStart(TableRow) | 방문 시작TableRow 노드. |
virtual VisitTableStart(Table) | 방문 시작Table 노드. |
virtual VisitTitleEnd(Title) | 방문 종료Title 노드. |
virtual VisitTitleStart(Title) | 방문 시작Title 노드. |
예
방문자를 사용하여 문서의 콘텐츠에 액세스하는 방법을 보여줍니다.
public static void Run()
{
// 문서 디렉토리의 경로.
string dataDir = RunExamples.GetDataDir_LoadingAndSaving();
// 변환하려는 문서를 엽니다.
Document doc = new Document(dataDir + "Aspose.one");
// DocumentVisitor 클래스에서 상속되는 객체를 생성합니다.
MyOneNoteToTxtWriter myConverter = new MyOneNoteToTxtWriter();
// 이것은 잘 알려진 방문자 패턴입니다. 방문자를 받아들이도록 모델을 가져오십시오.
// 모델은 해당 메소드를 호출하여 자체적으로 반복합니다.
// 방문자 개체에 대해(이를 방문이라고 함).
//
// 객체 모델의 모든 노드에는 Accept 메서드가 있으므로 방문하는
// 전체 문서뿐만 아니라 문서의 모든 노드에 대해 실행할 수 있습니다.
doc.Accept(myConverter);
// 방문이 완료되면 작업 결과를 검색할 수 있습니다.
// 이 예에서는 방문자에 누적되었습니다.
Console.WriteLine(myConverter.GetText());
Console.WriteLine(myConverter.NodeCount);
}
/// <summary>
/// 일반 텍스트 형식으로 문서를 저장하는 간단한 구현입니다. 방문자로 구현됩니다.
/// </summary>
public class MyOneNoteToTxtWriter : DocumentVisitor
{
public MyOneNoteToTxtWriter()
{
nodecount = 0;
mIsSkipText = false;
mBuilder = new StringBuilder();
}
/// <summary>
/// 방문자가 축적한 문서의 일반 텍스트를 가져옵니다.
/// </summary>
public string GetText()
{
return mBuilder.ToString();
}
/// <summary>
/// 현재 출력에 텍스트를 추가합니다. 활성화/비활성화 출력 플래그를 존중합니다.
/// </summary>
private void AppendText(string text)
{
if (!mIsSkipText)
{
mBuilder.AppendLine(text);
}
}
/// <summary>
/// RichText 노드가 문서에서 발견될 때 호출됩니다.
/// </summary>
public override void VisitRichTextStart(RichText run)
{
++nodecount;
AppendText(run.Text);
}
/// <summary>
/// Document 노드가 문서에서 발견될 때 호출됩니다.
/// </summary>
public override void VisitDocumentStart(Document document)
{
++nodecount;
}
/// <summary>
/// 문서에서 페이지 노드를 만나면 호출됩니다.
/// </summary>
public override void VisitPageStart(Page page)
{
++nodecount;
this.AppendText($"*** Page '{page.Title?.TitleText?.Text ?? "(no title)"}' ***");
}
/// <summary>
/// 페이지 노드의 처리가 완료되면 호출됩니다.
/// </summary>
public override void VisitPageEnd(Page page)
{
this.AppendText(string.Empty);
}
/// <summary>
/// 문서에서 Title 노드를 만나면 호출됩니다.
/// </summary>
public override void VisitTitleStart(Title title)
{
++nodecount;
}
/// <summary>
/// 문서에서 이미지 노드를 만났을 때 호출됩니다.
/// </summary>
public override void VisitImageStart(Image image)
{
++nodecount;
}
/// <summary>
/// 문서에서 OutlineGroup 노드를 만나면 호출됩니다.
/// </summary>
public override void VisitOutlineGroupStart(OutlineGroup outlineGroup)
{
++nodecount;
}
/// <summary>
/// 문서에서 아웃라인 노드를 만나면 호출됩니다.
/// </summary>
public override void VisitOutlineStart(Outline outline)
{
++nodecount;
}
/// <summary>
/// 문서에서 OutlineElement 노드를 만나면 호출됩니다.
/// </summary>
public override void VisitOutlineElementStart(OutlineElement outlineElement)
{
++nodecount;
}
/// <summary>
/// 방문자의 총 노드 수를 가져옵니다.
/// </summary>
public Int32 NodeCount
{
get { return this.nodecount; }
}
private readonly StringBuilder mBuilder;
private bool mIsSkipText;
private Int32 nodecount;
}
또한보십시오
- 네임스페이스 Aspose.Note
- 집회 Aspose.Note