当前位置:网站首页>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)
边栏推荐
猜你喜欢
MySQL - database query - use of aggregate function, aggregate query, grouping query
The video sound of station B is very low - solution
哈希表、哈希函数、布隆过滤器、一致性哈希
WGCNA分析基本教程总结
偷窃他人漏洞报告变卖成副业,漏洞赏金平台出“内鬼”
【1200. 最小絕對差】
Redis:Redis配置文件相关配置、Redis的持久化
多模输入事件分发机制详解
华为ensp模拟器 实现多个路由器的设备可以相互访问
Leetcode+ 81 - 85 monotone stack topic
随机推荐
改善机器视觉系统的方法
CAD中能显示打印不显示
网件r7000梅林系统5g不稳定 5g信号经常掉线解决方法
numpy vstack 和 column_stack
记一次重复造轮子(Obsidian 插件设置说明汉化)
torch. Tensor and torch The difference between tensor
每日一题-LeetCode556-下一个更大元素III-字符串-双指针-next_permutation
杰理之AD 系列 MIDI 功能说明【篇】
__init__() missing 2 required positional arguments 不易查明的继承错误
[micro service SCG] use of predict
Poster cover of glacier
Huawei ENSP simulator enables devices of multiple routers to access each other
网件r7000梅林系统虚拟内存创建失败,提示USB磁盘读写速度不满足要求解决办法,有需要创建虚拟内存吗??
2021 CCPC Harbin B. magical subsequence (thinking question)
杰理之增加进关机前把触摸模块关闭流程【篇】
Render function and virtual DOM
Android原生数据库的基本使用和升级
Leetcode+ 81 - 85 monotone stack topic
Golang中UTF编码和字符集
uniapp 富文本编辑器使用