- Notifications
You must be signed in to change notification settings - Fork 31.7k
/
Copy pathminidom-example.py
64 lines (51 loc) · 1.54 KB
/
minidom-example.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
importxml.dom.minidom
document="""\
<slideshow>
<title>Demo slideshow</title>
<slide><title>Slide title</title>
<point>This is a demo</point>
<point>Of a program for processing slides</point>
</slide>
<slide><title>Another demo slide</title>
<point>It is important</point>
<point>To have more than</point>
<point>one slide</point>
</slide>
</slideshow>
"""
dom=xml.dom.minidom.parseString(document)
defgetText(nodelist):
rc= []
fornodeinnodelist:
ifnode.nodeType==node.TEXT_NODE:
rc.append(node.data)
return''.join(rc)
defhandleSlideshow(slideshow):
print"<html>"
handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
slides=slideshow.getElementsByTagName("slide")
handleToc(slides)
handleSlides(slides)
print"</html>"
defhandleSlides(slides):
forslideinslides:
handleSlide(slide)
defhandleSlide(slide):
handleSlideTitle(slide.getElementsByTagName("title")[0])
handlePoints(slide.getElementsByTagName("point"))
defhandleSlideshowTitle(title):
print"<title>%s</title>"%getText(title.childNodes)
defhandleSlideTitle(title):
print"<h2>%s</h2>"%getText(title.childNodes)
defhandlePoints(points):
print"<ul>"
forpointinpoints:
handlePoint(point)
print"</ul>"
defhandlePoint(point):
print"<li>%s</li>"%getText(point.childNodes)
defhandleToc(slides):
forslideinslides:
title=slide.getElementsByTagName("title")[0]
print"<p>%s</p>"%getText(title.childNodes)
handleSlideshow(dom)