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 collections模块实例讲解
Apr 07 Python
python中threading超线程用法实例分析
May 16 Python
通过数据库向Django模型添加字段的示例
Jul 21 Python
Python实现全角半角字符互转的方法
Nov 28 Python
Python获取文件所在目录和文件名的方法
Jan 12 Python
Python 调用PIL库失败的解决方法
Jan 08 Python
python for和else语句趣谈
Jul 02 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
如何使用Python脚本实现文件拷贝
Nov 20 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
浅谈哪个Python库才最适合做数据可视化
Jun 28 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 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中处理模拟rewrite 效果
2006/12/09 PHP
php 空格,换行,跳格使用说明
2009/12/18 PHP
ini_set的用法介绍
2014/01/07 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
详解webpack介绍&amp;安装&amp;常用命令
2017/06/29 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
简单的Python抓taobao图片爬虫
2014/10/26 Python
python实现堆栈与队列的方法
2015/01/15 Python
Python实现分段线性插值
2018/12/17 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
外贸主管求职简历的自我评价
2013/10/23 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
普通大学毕业生自荐信范文
2014/02/23 职场文书
父母对孩子的寄语
2014/04/09 职场文书
投资合作协议书范本
2014/04/17 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
银行求职信怎么写
2014/05/26 职场文书
高中生学习计划书
2014/09/15 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
现货白银电话营销话术
2015/05/29 职场文书
《圆的周长》教学反思
2016/02/17 职场文书