| import xml.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) | |
| def getText(nodelist): | |
| rc = [] | |
| for node in nodelist: | |
| if node.nodeType == node.TEXT_NODE: | |
| rc.append(node.data) | |
| return ''.join(rc) | |
| def handleSlideshow(slideshow): | |
| print("<html>") | |
| handleSlideshowTitle(slideshow.getElementsByTagName("title")[0]) | |
| slides = slideshow.getElementsByTagName("slide") | |
| handleToc(slides) | |
| handleSlides(slides) | |
| print("</html>") | |
| def handleSlides(slides): | |
| for slide in slides: | |
| handleSlide(slide) | |
| def handleSlide(slide): | |
| handleSlideTitle(slide.getElementsByTagName("title")[0]) | |
| handlePoints(slide.getElementsByTagName("point")) | |
| def handleSlideshowTitle(title): | |
| print(f"<title>{getText(title.childNodes)}</title>") | |
| def handleSlideTitle(title): | |
| print(f"<h2>{getText(title.childNodes)}</h2>") | |
| def handlePoints(points): | |
| print("<ul>") | |
| for point in points: | |
| handlePoint(point) | |
| print("</ul>") | |
| def handlePoint(point): | |
| print(f"<li>{getText(point.childNodes)}</li>") | |
| def handleToc(slides): | |
| for slide in slides: | |
| title = slide.getElementsByTagName("title")[0] | |
| print(f"<p>{getText(title.childNodes)}</p>") | |
| handleSlideshow(dom) |