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实现的飞速中文网小说下载脚本
Apr 23 Python
Python中的日期时间处理详解
Nov 17 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
Odoo中如何生成唯一不重复的序列号详解
Feb 10 Python
Tensorflow之Saver的用法详解
Apr 23 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
May 16 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
Feb 05 Python
python 解决pycharm运行py文件只有unittest选项的问题
Sep 01 Python
python 如何实现遗传算法
Sep 22 Python
Python3中的tuple函数知识点讲解
Jan 03 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
PHP删除数组中的特定元素的代码
2012/06/28 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
jquery提示 &quot;object expected&quot;的解决方法
2009/12/13 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
2019/03/14 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
python MNIST手写识别数据调用API的方法
2018/08/08 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
Python面向对象进阶学习
2019/05/21 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
python字典key不能是可以是啥类型
2020/08/04 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
大一学生假期实习的自我评价
2013/10/12 职场文书
幸福中国演讲稿
2014/09/12 职场文书
师德先进个人事迹材料
2014/12/19 职场文书