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中下划线的使用方法
Mar 27 Python
django实现分页的方法
May 26 Python
python 线程的暂停, 恢复, 退出详解及实例
Dec 06 Python
详解Python 序列化Serialize 和 反序列化Deserialize
Aug 20 Python
Python找出最小的K个数实例代码
Jan 04 Python
查看python下OpenCV版本的方法
Aug 03 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
详解Python中pyautogui库的最全使用方法
Apr 01 Python
python 错误处理 assert详解
Apr 20 Python
jupyter notebook tensorflow打印device信息实例
Apr 20 Python
python numpy中setdiff1d的用法说明
Apr 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常用字符串的总结(待续)
2013/06/07 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
轻松学习Javascript闭包
2017/03/01 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
Python实现的石头剪子布代码分享
2014/08/22 Python
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
10个易被忽视但应掌握的Python基本用法
2015/04/01 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
python中调试或排错的五种方法示例
2019/09/12 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
Python进行特征提取的示例代码
2020/10/15 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
2019年Java面试必问之经典试题
2012/09/12 面试题
普天C++笔试题
2016/03/20 面试题
体育节口号
2014/06/19 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
vue递归实现树形组件
2022/07/15 Vue.js