DocumentVisitor — Aspose.Note FOSS for Python API Reference

Osztály: DocumentVisitor

Package: aspose.note Import: from aspose.note import DocumentVisitor

DocumentVisitor az absztrakt alaposztály a visitor-minta szerinti bejáráshoz egy OneNote dokumentumfában. Származtassa le, és csak a szükséges visit metódusokat felülírja, amelyekre szüksége van. Hívja node.Accept(visitor) a bejárás elindításához bármely csomópontból; hívja doc.Accept(visitor) az egész dokumentum bejárásához.

Az alaposztály összes metódusa nem csinál semmit (visszatér None). Csak azokat a metódusokat felülírja, amelyek az Ön felhasználási esetére relevánsak.


Visit metódusok

MethodHívva, amikorParaméter típusa
VisitDocumentStart(document)Belépés egy Document csomópontDocument
VisitDocumentEnd(document)Kilépés egy Document csomópontDocument
VisitPageStart(page)Belépés egy Page csomópontPage
VisitPageEnd(page)Kilépés egy Page csomópontPage
VisitTitleStart(title)Belépés egy Title csomópontTitle
VisitTitleEnd(title)Elhagyva egy Title csomópontTitle
VisitOutlineStart(outline)Belépés egy Outline nodeOutline
VisitOutlineEnd(outline)Elhagyva egy Outline nodeOutline
VisitOutlineElementStart(outline_element)Belépés egy OutlineElement nodeOutlineElement
VisitOutlineElementEnd(outline_element)Kilépés egy OutlineElement nodeOutlineElement
VisitRichTextStart(rich_text)Belépés egy RichText nodeRichText
VisitRichTextEnd(rich_text)Elhagyva egy RichText nodeRichText
VisitImageStart(image)Belépés egy Image csomópontImage
VisitImageEnd(image)Elhagyva egy Image csomópontImage

Minden metódus aláírása:

def VisitXxxStart(self, node: NodeType) -> None: ...
def VisitXxxEnd(self, node: NodeType) -> None: ...

Bejárási sorrend

Accept kiosztásokat hajt végre mélységi, előrendű bejárásban:

  1. VisitDocumentStart hívódik a dokumentumba belépéskor.
  2. Minden gyermek Page rekurzívan felkeresésre kerül (PageStart → children → PageEnd).
  3. Egy Page: TitleStart/End, majd minden Outline (OutlineStart → OutlineElements → OutlineEnd).
  4. Egy OutlineElement: OutlineElementStart, majd gyermekek (RichText, Image, beágyazott elemek), majd OutlineElementEnd.
  5. VisitDocumentEnd az összes oldal felkeresése után hívódik meg.

Használati példák

Gyűjtse össze az összes oldal címét

from aspose.note import Document, DocumentVisitor, Page, Title

class TitleCollector(DocumentVisitor):
    def __init__(self):
        self.titles = []

    def VisitTitleStart(self, title: Title) -> None:
        if title.TitleText:
            self.titles.append(title.TitleText.Text)

doc = Document("MyNotes.one")
visitor = TitleCollector()
doc.Accept(visitor)
print(visitor.titles)

Csomópontok számlálása típus szerint

from aspose.note import Document, DocumentVisitor, Page, RichText, Image

class NodeCounter(DocumentVisitor):
    def __init__(self):
        self.pages = 0
        self.rich_texts = 0
        self.images = 0

    def VisitPageStart(self, page: Page) -> None:
        self.pages += 1

    def VisitRichTextStart(self, rich_text: RichText) -> None:
        self.rich_texts += 1

    def VisitImageStart(self, image: Image) -> None:
        self.images += 1

doc = Document("MyNotes.one")
counter = NodeCounter()
doc.Accept(counter)
print(f"Pages: {counter.pages}, RichText: {counter.rich_texts}, Images: {counter.images}")

Minden képet kinyer a látogató segítségével

from aspose.note import Document, DocumentVisitor, Image

class ImageExtractor(DocumentVisitor):
    def __init__(self):
        self.images = []

    def VisitImageStart(self, image: Image) -> None:
        if image.Bytes:
            self.images.append(image)

doc = Document("MyNotes.one")
extractor = ImageExtractor()
doc.Accept(extractor)

for i, img in enumerate(extractor.images):
    filename = img.FileName or f"image_{i}.bin"
    with open(filename, "wb") as f:
        f.write(img.Bytes)
    print(f"Saved: {filename} ({len(img.Bytes)} bytes)")

Dokumentumvázlat jelentés létrehozása

from aspose.note import (
    Document, DocumentVisitor,
    Page, Outline, OutlineElement, RichText
)

class OutlineReporter(DocumentVisitor):
    def __init__(self):
        self._indent = 0
        self.lines = []

    def VisitPageStart(self, page: Page) -> None:
        title = page.Title.TitleText.Text if page.Title and page.Title.TitleText else "(untitled)"
        self.lines.append(f"PAGE: {title}")
        self._indent = 1

    def VisitOutlineElementStart(self, elem: OutlineElement) -> None:
        self._indent = 2 + elem.IndentLevel

    def VisitRichTextStart(self, rt: RichText) -> None:
        if rt.Text.strip():
            self.lines.append("  " * self._indent + rt.Text.strip())

doc = Document("MyNotes.one")
reporter = OutlineReporter()
doc.Accept(reporter)
print("\n".join(reporter.lines))

Látogatás alcsomópontról

Accept bármely csomóponton meghívható, nem csak a gyökérdokumentumon:

from aspose.note import Document, Page, DocumentVisitor, RichText

class TextPrinter(DocumentVisitor):
    def VisitRichTextStart(self, rt: RichText) -> None:
        print(rt.Text)

doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
if pages:
    # Visit only the first page
    pages[0].Accept(TextPrinter())

Támogatott csomóponttípusok

A látogató jelenleg ezeket a csomóponttípusokat kezeli: Document, Page, Title, Outline, OutlineElement, RichText, Image. Nincsenek visit metódusok a következőkhöz: Table, TableRow, TableCell, AttachedFile, vagy NumberList — ezeket a csomópontokat a következővel érjük el: GetChildNodes helyette a bejárással.


Lásd még

  • Dokumentum: gyökércsomópont; hívás doc.Accept(visitor) a teljes bejárás elindításához
  • Oldal: VisitPageStart / VisitPageEnd
  • Vázlat: VisitOutlineStart / VisitOutlineEnd
  • RichText: VisitRichTextStart / VisitRichTextEnd
  • Kép: VisitImageStart / VisitImageEnd
 Magyar