当前位置:网站首页>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)
边栏推荐
猜你喜欢
随机推荐
2021 CCPC 哈尔滨 I. Power and Zero(二进制 + 思维)
Stealing others' vulnerability reports and selling them into sidelines, and the vulnerability reward platform gives rise to "insiders"
宝塔 7.9.2 宝塔控制面板绕过 手机绑定认证 绕过官方认证
vim异步问题
【申博攻略】六.如何联系心仪的博导
D3.js+Three.js数据可视化3d地球js特效
仿ps样式js网页涂鸦板插件
华为ensp模拟器 实现多个路由器的设备可以相互访问
华为ensp模拟器 三层交换机
软件开发过中的采购
[observation] Lenovo: 3x (1+n) smart office solution, releasing the "multiplier effect" of office productivity
IIC (STM32)
Redis:Redis配置文件相关配置、Redis的持久化
Solution of 5g unstable 5g signal often dropped in NetWare r7000 Merlin system
redis RDB AOF
[solution] paddlepaddle 2 X call static graph mode
Jmeter 之压测入门
Redis bloom filter
RFID仓库管理系统解决方案有哪些功能模块
Embedded TC test case