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中while循环语句用法简单实例
May 07 Python
详解python的数字类型变量与其方法
Nov 20 Python
Python实现随机选择元素功能
Sep 14 Python
Python图像处理之识别图像中的文字(实例讲解)
May 10 Python
python实现C4.5决策树算法
Aug 29 Python
python 用opencv调用训练好的模型进行识别的方法
Dec 07 Python
Django框架使用mysql视图操作示例
May 15 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
python实现俄罗斯方块游戏(改进版)
Mar 13 Python
python元组打包和解包过程详解
Aug 02 Python
pandas进行数据输入和输出的方法详解
Mar 23 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
PHP与SQL注入攻击[一]
2007/04/17 PHP
php calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
Ext面向对象开发实践(续)
2008/11/18 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
JS二级菜单不同实现方法分析【4种方法】
2018/12/21 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
numpy排序与集合运算用法示例
2017/12/15 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
python多线程下信号处理程序示例
2019/05/31 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
党章学习思想汇报
2014/01/14 职场文书
秋游活动策划方案
2014/02/16 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
个人创业事迹材料
2014/12/30 职场文书
承诺函范文
2015/01/21 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
JavaScript中reduce()的用法
2022/05/11 Javascript