xml.dom.minidom 是 DOM 接口的最小化实现,具有和其它语言类似的 API。它的目标是比完整的 DOM 简单,并且更为小巧。对于 DOM 不熟悉的用户用户应当考虑用 xml.etree.ElementTree 模块来进行 XML 文件的处理。

DOM 应用程序通常会从将某个 XML 解析为 DOM 开始。使用 xml.dom.minidom 时,这是通过各种解析函数来完成的:

from xml.dom.minidom import parse, parseString
dom1 = parse('c:\\temp\\mydata.xml')  # parse an XML file by name
datasource = open('c:\\temp\\mydata.xml')
dom2 = parse(datasource)  # parse an open file
dom3 = parseString('<myxml>Some data<empty/> some more data</myxml>') # parse a string

parse() 函数可以接受一个文件名或打开的文件对象。如果你将 XML 存为字符串,则可以改用 parseString() 函数。两个函数均返回一个代表文档内容的 Document 对象。

你也可以通过在一个 DOM Implementation 对象上调用方法来创造 Document。此对象可通过调用 xml.dom 包或 xml.dom.minidom 模块中的 getDOMImplementation() 函数来获取。一旦你获得了一个 Document,你可以向其添加子节点来填充 DOM。

from xml.dom.minidom import getDOMImplementation
impl = getDOMImplementation()
newdoc = impl.createDocument(None, "some_tag", None)
top_element = newdoc.documentElement
text = newdoc.createTextNode('Some textual content.')
top_element.appendChild(text)

一旦你得到了 DOM 文档对象,你就可以通过其的属性和方法访问 XML 文档的各个部分。这些属性定义在 DOM 规格说明当中。文档对象的主要特征属性是 documentElement 属性。它给出了 XML 文档中的主元素:即包含了所有其它元素的元素。以下是一个程序示例:

dom3 = parseString("<myxml>Some data</myxml>")
assert dom3.documentElement.tagName == "myxml"

当你完成一个 DOM 树的处理时,你可以选择调用 unlink() 方法以鼓励尽早清除不再需要的对象。unlink() 是 xml.dom.minidom 针对 DOM API 的专属拓展,它会将特定节点和它的下级节点标记为不再有用。此外,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("<title>%s</title>" % getText(title.childNodes))
def handleSlideTitle(title):
    print("<h2>%s</h2>" % getText(title.childNodes))
def handlePoints(points):
    print("<ul>")
    for point in points:
        handlePoint(point)
    print("</ul>")
def handlePoint(point):
    print("<li>%s</li>" % getText(point.childNodes))
def handleToc(slides):
    for slide in slides:
        title = slide.getElementsByTagName("title")[0]
        print("<p>%s</p>" % getText(title.childNodes))
handleSlideshow(dom)

执行结果:

<title>Demo slideshow</title> <p>Slide title</p> <p>Another demo slide</p> <h2>Slide title</h2> <li>This is a demo</li> <li>Of a program for processing slides</li> <h2>Another demo slide</h2> <li>It is important</li> <li>To have more than</li> <li>one slide</li> </html>

https://docs.python.org/3/library/xml.dom.minidom.html

原文链接:https://docs.python.org/zh-cn/3/library/xml.dom.minidom.html 当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,所以离不了os模块。python编程时,经常和文件、目录打交道,这是就离不了os模块。import语句有:import语句用来导入其他python文件(称为模块module),使用该模块里定义的类、方法或者变量,从而达到代码复用的目的。XML是一种固定的分层数据格式,它最自然的表示方式是树。1.与整个文档的交互(读写文件)通常是在。表示树中的单个节点。级别完成的(文件的读写)。 有个脚本一直调用一个xml文件,想让他更加灵活。就有了今天的这个需求。程序使用配置文件生成任务,但是配置文件手动编写太过繁琐,配合调用脚本完成自动化# -*-coding:utf-8 -*-# BY WANGCCimport xml.dom.minidom as minidomclass Nsf_currency:task_type='domain'os_match = 'yes'messtype... xml的结果性关系包括节点关系及属性内容 xml的基本单位是元素,开始标记,属性,结束标记组成 〈?xml version="1.0" encoding="gb2312" ?〉   〈参考资料〉    〈名称〉xml入门精解〈/名称〉    〈作者〉张三〈/作者〉    〈价格 货币单位="人民币"〉20.00〈/价格〉    〈/书籍〉    〈名称〉xml dom = minidom.Document() # 创建根节点,每次都要用到dom对象来创建任何节点 root_node=dom.createElement('zabbix_export') # 用dom对象添加根节点 dom.appendChild(root_node) # 用dom对象创建元素子节点 version_node = 首先我是用的是dom去解析我们xml文件。 一、读取XML文件 DOM 方式:DOM 中文译为文档对象模型,是 W3C 组织推荐的标准编程接口,它将 XML 数据在内存中解析成一个树,通过对树的操作来操作 XML 首先我们的一个xml的文本是: <?xml version="1.0" encoding="utf-8"?> <catalog> <login username="pytest" passwd="123456"> 我有一个使用xml.dom.minidom创建的nodes xml.dom.Node对象的集合。通过使用Node对象的toxml()方法将它们转换为字符串,我将它们(单独)存储在数据库中。问题是,有时我希望能够使用某种解析器将它们转换回适当的节点对象。据我所见,python附带的各种库都使用Expat,它不会解析像“”这样的字符串,也不会解析任何不正确的xml字符串。那么,有人有什么想法吗?我意识... # -*- coding: utf-8 -*- #https://www.python.org/dev/peps/pep-0263/ # @Data 2020/9/19 13:58 import os from xml.dom.minidom import parse from xml.dom.minidom import Document from xml.dom.minidom import parseString from lxml.etree impor. Python 使用xml.dom.minidom 和xml.etree.ElementTree解析ARXML文件,比较xml.dom.minidom 和xml.etree.ElementTree.