Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
allendowney
GitHub Repository: allendowney/cpython
Path: blob/main/Doc/includes/minidom-example.py
12 views
1
import xml.dom.minidom
2
3
document = """\
4
<slideshow>
5
<title>Demo slideshow</title>
6
<slide><title>Slide title</title>
7
<point>This is a demo</point>
8
<point>Of a program for processing slides</point>
9
</slide>
10
11
<slide><title>Another demo slide</title>
12
<point>It is important</point>
13
<point>To have more than</point>
14
<point>one slide</point>
15
</slide>
16
</slideshow>
17
"""
18
19
dom = xml.dom.minidom.parseString(document)
20
21
def getText(nodelist):
22
rc = []
23
for node in nodelist:
24
if node.nodeType == node.TEXT_NODE:
25
rc.append(node.data)
26
return ''.join(rc)
27
28
def handleSlideshow(slideshow):
29
print("<html>")
30
handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
31
slides = slideshow.getElementsByTagName("slide")
32
handleToc(slides)
33
handleSlides(slides)
34
print("</html>")
35
36
def handleSlides(slides):
37
for slide in slides:
38
handleSlide(slide)
39
40
def handleSlide(slide):
41
handleSlideTitle(slide.getElementsByTagName("title")[0])
42
handlePoints(slide.getElementsByTagName("point"))
43
44
def handleSlideshowTitle(title):
45
print(f"<title>{getText(title.childNodes)}</title>")
46
47
def handleSlideTitle(title):
48
print(f"<h2>{getText(title.childNodes)}</h2>")
49
50
def handlePoints(points):
51
print("<ul>")
52
for point in points:
53
handlePoint(point)
54
print("</ul>")
55
56
def handlePoint(point):
57
print(f"<li>{getText(point.childNodes)}</li>")
58
59
def handleToc(slides):
60
for slide in slides:
61
title = slide.getElementsByTagName("title")[0]
62
print(f"<p>{getText(title.childNodes)}</p>")
63
64
handleSlideshow(dom)
65
66