• python模块整理10xml.dom.minidom模块


    xml.dom.minidom
    http://docs.python.org/library/xml.dom.minidom.html
    一、介绍
    XML分析器体系结构和API:
    Python标准库提供了一个最小的接口,但有用的一套使用XML.

    两个最基本和最广泛使用的API,XML数据是SAX和DOM接口.

    Simple API for XML (SAX) : 在这里你感兴趣的事件注册回调,然后让通过的文件进行的解析器。当您的文件是大型或你有内存限制,这是非常有用的,它解析的文件,因为它从磁盘读取整个文件没有存储在内存中.

    Document Object Model (DOM) API : 这是万维网联盟的建议,其中将整个文件读入内存,并存储在一个层次(树状)的形式表示XML文档的所有功能.
    SAX的,显然不能作为DOM快速处理的信息可以与大文件时的工作。另一方面,使用DOM完全可以真的操作你的资源,特别是如果使用大量小文件.
    SAX是只读,而DOM允许修改XML文件。由于这两种不同的API的字面相辅相成,没有任何理由,你为什么不能使用大型项目.

    二、XML的DOM API解析:
    1、DOM五个基本对象
    DOM 的五个基本对象:Document,Node,NodeList,Element,Attr
    Document代表整个XML文档,包含有元素,属性等
    Nodelist是从Node继承而来的,表示一系列的Node
    Node所有组件的一个XML文档是子类的点头
    Element:代表的是 XML 文档中的标签元素,继承于 Node
    Attr :代表xml文档的属性,需要注意的是: Attribute value nodes on element nodes.
    XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。

    2、节点
    根据 DOM,XML 文档中的每个成分都是一个节点 。
    DOM 是这样规定的:
    整个文档是一个文档节点
    每个 XML 标签是一个元素节点
    包含在 XML 元素中的文本是文本节点
    每一个 XML 属性是一个属性节点
    注释属于注释节点

    三、xml.dom.minidom
    主要掌握这个
    1、xml.dom.minidom.parse(filename_or_file[, parser[, bufsize]])
    filename_or_file是一个文件或者文件对象

    If you have XML in a string, you can use the parseString() function instead:
    2、xml.dom.minidom.parseString(string[, parser])?
    Return a Document that represents the string. This method creates a StringIO object for the string and passes that on to parse().

    Both functions return a Document object representing the content of the document.

    # Open XML document using minidom parser
    DOMTree = xml.dom.minidom.parse("text.xml")
    collection = DOMTree.documentElement
    if collection.hasAttribute("shelf"):
    print "Root element : %s" % collection.getAttribute("shelf")

    3、官方实例

     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 handleSlideshowTitle(title):#打印title
    29 print "<title>%s</title>" % getText(title.childNodes)#获取所有title的Nodes
    30 
    31 def handleSlideTitle(title):#打印title
    32 print "<h2>%s</h2>" % getText(title.childNodes)#获取所有title的Nodes
    33 
    34 def handlePoint(point):#打印point
    35 print "<li>%s</li>" % getText(point.childNodes)#获取所有point的Nodes
    36 
    37 def handlePoints(points):#打印多个point
    38 print "<ul>"
    39 for point in points:
    40 handlePoint(point)
    41 print "</ul>"
    42 
    43 def handleSlide(slide):#在slide里获取title和point
    44 handleSlideTitle(slide.getElementsByTagName("title")[0])
    45 handlePoints(slide.getElementsByTagName("point"))
    46 
    47 def handleToc(slides):#遍历多个slide获取title
    48 for slide in slides:
    49 title = slide.getElementsByTagName("title")[0]
    50 print "<p>%s</p>" % getText(title.childNodes)
    51 
    52 def handleSlides(slides):#遍历多个slide获取slide
    53 for slide in slides:
    54 handleSlide(slide)
    55 
    56 def handleSlideshow(slideshow):
    57 print "<html>"
    58 handleSlideshowTitle(slideshow.getElementsByTagName("title")[0])
    59 slides = slideshow.getElementsByTagName("slide")
    60 handleToc(slides)
    61 handleSlides(slides)
    62 print "</html>"
    63 
    64 handleSlideshow(dom)
  • 相关阅读:
    jsp第四次作业
    软件测试第一次作业
    jsp第三次作业
    jsp第二次作业
    JSP第九次作业
    JSP第八次作业
    JSP第七次作业
    JSP第六次作业
    JSP第五次作业
    JSP第四次作业2
  • 原文地址:https://www.cnblogs.com/diege/p/2712186.html
Copyright © 2020-2023  润新知