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 相关文章推荐
Windows8下安装Python的BeautifulSoup
Jan 22 Python
Python标准库sched模块使用指南
Jul 06 Python
Python命令行解析模块详解
Feb 01 Python
python3 破解 geetest(极验)的滑块验证码功能
Feb 24 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
Aug 09 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
django 模型字段设置默认值代码
Jul 15 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
python实现三壶谜题的示例详解
Nov 02 Python
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 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 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
初识Node.js
2015/03/20 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
Python反射用法实例简析
2017/12/22 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
python生成ppt的方法
2018/06/07 Python
python可视化实现代码
2019/01/15 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
Python安装whl文件过程图解
2020/02/18 Python
使用python计算三角形的斜边例子
2020/04/15 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
美国最大的团购网站:Groupon
2016/07/23 全球购物
设计部经理的岗位职责
2013/11/16 职场文书
留学生如何写好自荐信
2013/12/27 职场文书
致跳远、跳高运动员广播稿
2014/01/09 职场文书
写给爸爸的道歉信
2014/01/15 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
Java界面编程实现界面跳转
2022/06/16 Java/Android