Python minidom模块用法示例【DOM写入和解析XML】


Posted in Python onMarch 25, 2019

本文实例讲述了Python minidom模块用法。分享给大家供大家参考,具体如下:

一、DOM写XML文件

# -*- coding:utf-8 -*-
#!python3
#导入minidom
from xml.dom import minidom
# 1.创建DOM树对象
dom=minidom.Document()
# 2.创建根节点。每次都要用DOM对象来创建任何节点。
root_node=dom.createElement('root')
# 3.用DOM对象添加根节点
dom.appendChild(root_node)
# 用DOM对象创建元素子节点
book_node=dom.createElement('book')
# 用父节点对象添加元素子节点
root_node.appendChild(book_node)
# 设置该节点的属性
book_node.setAttribute('price','199')
name_node=dom.createElement('name')
root_node.appendChild(name_node)
# 也用DOM创建文本节点,把文本节点(文字内容)看成子节点
name_text=dom.createTextNode('计算机程序设计语言 第1版')
# 用添加了文本的节点对象(看成文本节点的父节点)添加文本节点
name_node.appendChild(name_text)
# 每一个结点对象(包括dom对象本身)都有输出XML内容的方法,如:toxml()--字符串, toprettyxml()--美化树形格式。
try:
  with open('dom_write.xml','w',encoding='UTF-8') as fh:
    # 4.writexml()第一个参数是目标文件对象,第二个参数是根节点的缩进格式,第三个参数是其他子节点的缩进格式,
    # 第四个参数制定了换行格式,第五个参数制定了xml内容的编码。
    dom.writexml(fh,indent='',addindent='\t',newl='\n',encoding='UTF-8')
    print('写入xml OK!')
except Exception as err:
  print('错误信息:{0}'.format(err))

生成的dom_write.xml文件结果如下:

<?xml version="1.0" encoding="UTF-8"?>
<root>
 <book price="199"/>
 <name>计算机程序设计语言 第1版</name>
</root>

二、DOM解析XML文件

# -*- coding:utf-8 -*-
#!python3
from xml.dom import minidom
with open('dom_write.xml','r',encoding='utf8') as fh:
  # parse()获取DOM对象
  dom=minidom.parse(fh)
  # 获取根节点
  root=dom.documentElement
  # 节点名称
  print(root.nodeName)
  # 节点类型:'ELEMENT_NODE',元素节点; 'TEXT_NODE',文本节点; 'ATTRIBUTE_NODE',属性节点
  print(root.nodeType)
  # 获取某个节点下所有子节点,是个列表
  print(root.childNodes)
  # 通过dom对象或根元素,再根据标签名获取元素节点,是个列表
  book=root.getElementsByTagName('book')[0]
  # 获取节点属性
  print(book.getAttribute('price'))
  # 获取某个元素节点的文本内容,先获取子文本节点,然后通过“data”属性获取文本内容
  name=root.getElementsByTagName('name')[0]
  name_text_node=name.childNodes[0]
  print(name_text_node.data)
  # 获取某节点的父节点
  print(name.parentNode.nodeName)

运行输出:

root
1
[<DOM Text node "'\n\t'">, <DOM Element: book at 0x1dd2800>, <DOM Text node "'\n\t'">, <DOM Element: name at 0x1dd2850>, <DOM Text node "'\n'">]
199
计算机程序设计语言 第1版
root

Python 相关文章推荐
解决Python出现_warn_unsafe_extraction问题的方法
Mar 24 Python
Python在图片中添加文字的两种方法
Apr 29 Python
python中将函数赋值给变量时需要注意的一些问题
Aug 18 Python
使用 Python 实现微信公众号粉丝迁移流程
Jan 03 Python
Python入门之后再看点什么好?
Mar 05 Python
pyqt远程批量执行Linux命令程序的方法
Feb 14 Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
使用已经得到的keras模型识别自己手写的数字方式
Jun 29 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 #Python
详解Python装饰器
Mar 25 #Python
详解用python自制微信机器人,定时发送天气预报
Mar 25 #Python
Python3.5实现的三级菜单功能示例
Mar 25 #Python
使用Django简单编写一个XSS平台的方法步骤
Mar 25 #Python
Python for循环与range函数的使用详解
Mar 23 #Python
详解Python读取yaml文件多层菜单
Mar 23 #Python
You might like
用PHP读取超大文件的实例代码
2012/04/01 PHP
php session劫持和防范的方法
2013/11/12 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
整理Python中的赋值运算符
2015/05/13 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
python实现经纬度采样的示例代码
2020/12/10 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
英国女性时尚品牌:Apricot
2018/12/04 全球购物
戴森英国官网:Dyson英国
2019/05/07 全球购物
个人自我鉴定
2013/11/07 职场文书
学生处主任岗位职责
2013/12/01 职场文书
师德学习感言
2014/01/31 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
教师考核评语
2014/04/28 职场文书
施工安全生产承诺书
2014/05/23 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
化验室岗位职责
2015/02/14 职场文书
辞职书格式样本
2015/02/26 职场文书
2016教师学习教育法心得体会
2016/01/19 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python