当前位置:网站首页>minidom 模塊寫入和解析 XML
minidom 模塊寫入和解析 XML
2022-07-04 21:21: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)
边栏推荐
猜你喜欢
[server data recovery] a case of RAID5 data recovery stored in a brand of server
IIC (STM32)
Routing configuration and connectivity test of Huawei simulator ENSP
Configuration of DNS server of Huawei ENSP simulator
Leetcode+ 81 - 85 monotone stack topic
TweenMax表情按钮js特效
uniapp 富文本编辑器使用
[observation] Lenovo: 3x (1+n) smart office solution, releasing the "multiplier effect" of office productivity
D3.js+Three.js数据可视化3d地球js特效
Day24: file system
随机推荐
Why does invariant mode improve performance
Redis bloom filter
华为ensp模拟器实现通信安全(交换机)
软件开发过中的采购
[buuctf.reverse] 151_ [FlareOn6]DnsChess
Can be displayed in CAD but not displayed in print
Day24: file system
Detailed explanation of multi-mode input event distribution mechanism
Jerry's ad series MIDI function description [chapter]
【服务器数据恢复】某品牌服务器存储raid5数据恢复案例
B站视频 声音很小——解决办法
The video sound of station B is very low - solution
Pytorch---使用Pytorch实现LinkNet进行语义分割
【解决方案】PaddlePaddle 2.x调用静态图模式
福昕PDF编辑器v10.1.8绿色版
网件r7000梅林系统5g不稳定 5g信号经常掉线解决方法
数十亿公民信息遭泄漏!公有云上的数据安全还有“救”吗?
Jmeter 之压测入门
基于OpenCV haarcascades的对象检测
maya灯建模