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读写Redis数据库操作示例
Mar 18 Python
Python3使用requests包抓取并保存网页源码的方法
Mar 15 Python
基于Python __dict__与dir()的区别详解
Oct 30 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
selenium 安装与chromedriver安装的方法步骤
Jun 12 Python
python的pytest框架之命令行参数详解(下)
Jun 27 Python
python计算n的阶乘的方法代码
Oct 25 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
Jun 01 Python
PyQt5结合QtDesigner实现文本框读写操作
Jun 11 Python
Python OpenCV实现图像模板匹配详解
Apr 07 Python
python数字图像处理之对比度与亮度调整示例
Jun 28 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中Collection 类的设计
2013/06/21 PHP
php防止sql注入代码实例
2013/12/18 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
javascript面向对象之Javascript 继承
2010/05/04 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
Python之PyUnit单元测试实例
2014/10/11 Python
Python Matplotlib库入门指南
2015/05/18 Python
Python中创建字典的几种方法总结(推荐)
2017/04/27 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python线程信号量semaphore使用解析
2019/11/30 Python
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
民事赔偿协议书
2014/11/02 职场文书
2014年部门工作总结
2014/11/12 职场文书
SpringAop日志找不到方法的处理
2021/06/21 Java/Android
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技