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 SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
Python实现学生成绩管理系统
Apr 05 Python
python爬虫正则表达式之处理换行符
Jun 08 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
django框架自定义用户表操作示例
Aug 07 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
Oct 22 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
PyCharm使用之配置SSH Interpreter的方法步骤
Dec 26 Python
python实现单机五子棋
Aug 28 Python
python中re模块知识点总结
Jan 17 Python
python 模拟在天空中放风筝的示例代码
Apr 21 Python
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
Aug 30 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快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
vuex的简单使用教程
2018/02/02 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
Python操作mongodb的9个步骤
2018/06/04 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
思想政治自我鉴定
2013/10/06 职场文书
关于建议书的格式范文
2014/05/20 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
入党函调证明材料
2015/06/19 职场文书
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技