mirror of
				https://github.com/python/cpython.git
				synced 2025-10-28 04:04:44 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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)
 | 
