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调用C语言开发的共享库方法实例
Mar 18 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 Python
Python中的字符串类型基本知识学习教程
Feb 04 Python
如何在Python函数执行前后增加额外的行为
Oct 20 Python
基于python实现聊天室程序
Jul 27 Python
python deque模块简单使用代码实例
Mar 12 Python
Python调用shell cmd方法代码示例解析
Jun 18 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 Python
基于flask实现五子棋小游戏
May 25 Python
用Python selenium实现淘宝抢单机器人
Jun 18 Python
手残删除python之后的补救方法
Jun 26 Python
Python制作表白爱心合集
Jan 22 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+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
用JS实现的一个include函数
2007/07/21 Javascript
ie focus bug 解决方法
2009/09/03 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
JS前端加密算法示例
2016/12/22 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
python中的字典使用分享
2016/07/31 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
解析Python的缩进规则的使用
2019/01/16 Python
Python实现微信小程序支付功能
2019/07/25 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
用python批量下载apk
2020/12/29 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
项目资料员岗位职责
2013/12/10 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
租房合同协议书
2014/04/09 职场文书
身份证丢失证明
2015/06/19 职场文书
入党函调证明材料
2015/06/19 职场文书