Document.Accept
Document.Accept method
노드의 방문자를 수락합니다.
public override void Accept(DocumentVisitor visitor)
모수 | 유형 | 설명 |
---|---|---|
visitor | DocumentVisitor | 에서 파생된 클래스의 개체DocumentVisitor . |
예
방문자를 사용하여 문서의 콘텐츠에 액세스하는 방법을 보여줍니다.
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;
}
또한보십시오
- class DocumentVisitor
- class Document
- 네임스페이스 Aspose.Note
- 집회 Aspose.Note