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使用htpasswd实现基本认证授权的例子
Jun 10 Python
Python的多态性实例分析
Jul 07 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
Python编程实现的简单神经网络算法示例
Jan 26 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
Apr 17 Python
浅谈解除装饰器作用(python3新增)
Oct 15 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
python处理excel绘制雷达图
Oct 18 Python
如何基于Python制作有道翻译小工具
Dec 16 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
Dec 31 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 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对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
浅析php数据类型转换
2014/01/09 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
jQuery1.6 使用方法一
2011/11/23 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
vue2.0在table中实现全选和反选的示例代码
2017/11/04 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
python 网络爬虫初级实现代码
2016/02/27 Python
Python分析学校四六级过关情况
2017/11/22 Python
django模板语法学习之include示例详解
2017/12/17 Python
Python遍历numpy数组的实例
2018/04/04 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
室内设计自我鉴定
2013/10/15 职场文书
两则小学生的自我评价分享
2013/11/14 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
合作意向书
2014/07/30 职场文书
导游词之嵊泗列岛
2019/10/30 职场文书
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
Python 多线程处理任务实例
2021/11/07 Python