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 + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
Jul 14 Python
python使用socket连接远程服务器的方法
Apr 29 Python
Python中datetime常用时间处理方法
Jun 15 Python
Python3实战之爬虫抓取网易云音乐的热门评论
Oct 09 Python
详解python上传文件和字符到PHP服务器
Nov 24 Python
Python实现简单生成验证码功能【基于random模块】
Feb 10 Python
Python3连接SQLServer、Oracle、MySql的方法
Jun 28 Python
基于python生成器封装的协程类
Mar 20 Python
python中的global关键字的使用方法
Aug 20 Python
在pycharm中显示python画的图方法
Aug 31 Python
Python 代码调试技巧示例代码
Aug 11 Python
Numpy中的数组搜索中np.where方法详细介绍
Jan 08 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发送post请求的三种方法
2014/02/11 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
PHP7新增函数
2021/03/09 PHP
jquery 模板的应用示例
2013/11/12 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
JavaScript编写的网页小游戏,很给力
2017/08/18 Javascript
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
2018/07/31 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
基于python 处理中文路径的终极解决方法
2018/04/12 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
Python实现最常见加密方式详解
2019/07/13 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
numba提升python运行速度的实例方法
2021/01/25 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
Java程序员面试题
2016/09/27 面试题
介绍一下Java中标识符的命名规则
2014/02/03 面试题
计算机专业应届毕业生自荐信
2013/09/26 职场文书
文化活动实施方案
2014/03/28 职场文书
家长寄语大全
2014/04/02 职场文书
公司经理任命书
2014/06/05 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
护士个人总结范文
2015/02/13 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
如何用PHP实现多线程编程
2021/05/26 PHP
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
Linux磁盘管理方法介绍
2022/06/01 Servers