(root)/
Python-3.11.7/
Doc/
includes/
minidom-example.py
       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)