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如何在终端里面显示一张图片
Aug 17 Python
Python实现爬虫从网络上下载文档的实例代码
Jun 13 Python
python实现自动登录后台管理系统
Oct 18 Python
Flask框架工厂函数用法实例分析
May 25 Python
python批量爬取下载抖音视频
Jun 17 Python
python__name__原理及用法详解
Nov 02 Python
python统计字符的个数代码实例
Feb 07 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
Python操作MySQL数据库的示例代码
Jul 13 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 Python
python自动化八大定位元素讲解
Jul 09 Python
详解Python如何批量采集京东商品数据流程
Jan 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
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
开启PHP的伪静态模式
2015/12/31 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
PHP Class SoapClient not found解决方法
2018/01/20 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
JavaScript 隐性类型转换步骤浅析
2018/03/15 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
python之yield和Generator深入解析
2019/09/18 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
关于圣诞节的广播稿
2014/01/26 职场文书
顶碗少年教学反思
2014/02/21 职场文书
导师工作推荐信范文
2014/05/17 职场文书
项目合作协议书
2014/09/23 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS