当前位置:网站首页>minidom 模块写入和解析 XML
minidom 模块写入和解析 XML
2022-07-04 20:26:00 【Harrytsz】
一、写 XML 文件
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))
结果如下:
<?xml version="1.0" encoding="utf8"?>
<root>
<book price="99">
<name>计算机程序设计语言 第1版</name>
</book>
</root>
二、解析 XML 文件
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)
边栏推荐
猜你喜欢
Detailed explanation of multi-mode input event distribution mechanism
每日一题-LeetCode1200-最小绝对差-数组-排序
render函数与虚拟dom
华为ensp模拟器 给路由器配置DHCP
网件r7000梅林系统5g不稳定 5g信号经常掉线解决方法
D3.js+Three.js数据可视化3d地球js特效
华为ensp模拟器 配置ACL访问控制列表
华为ensp模拟器 实现多个路由器的设备可以相互访问
MySQL --- 数据库查询 - 聚合函数的使用、聚合查询、分组查询
【optimtool.unconstrain】无约束优化工具箱
随机推荐
Remember to build wheels repeatedly at one time (the setting instructions of obsidian plug-in are translated into Chinese)
admas零件名重复
杰理之增加进关机前把触摸模块关闭流程【篇】
[observation] Lenovo: 3x (1+n) smart office solution, releasing the "multiplier effect" of office productivity
CAD中能显示打印不显示
Redis cache
每日一题-LeetCode1200-最小绝对差-数组-排序
maya灯建模
【服务器数据恢复】某品牌服务器存储raid5数据恢复案例
【Try to Hack】宽字节注入
In the face of the same complex test task, why can the elder sort out the solution quickly? Ali's ten-year test engineers showed their skills
Advantages of RFID warehouse management system solution
async await 在map中使用
记一次重复造轮子(Obsidian 插件设置说明汉化)
Day24: file system
Huawei simulator ENSP common commands
网件r7000梅林系统虚拟内存创建失败,提示USB磁盘读写速度不满足要求解决办法,有需要创建虚拟内存吗??
hash 表的概念及应用
Roast B station charges, is it because it has no money?
What are the functional modules of RFID warehouse management system solution