1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| def saxiter(node : Element) -> Iterator[Element]:
"""Return an interator over all elements reachable from node: later siblings and recursively all children."""
while node:
yield node
if node.hasChildNodes():
yield from saxiter(node.firstChild)
node = node.nextSibling
def edittextElements(doc : OpenDocument, pattern : list[str]) -> Generator[tuple[str, str], str, None]:
"""Goes over all elements, and look for the text that contains the given."""
for elem in saxiter(doc.topnode):
if elem.__class__ is Text:
for pat in pattern:
if pat in str(elem):
elem.data = yield (pat, elem.data) |
Partager