Python minidom模塊用法示例【DOM寫入和解析XML】
本文實例講述了Python minidom模塊用法。分享給大家供大家參考,具體如下:
一、DOM寫XML文件
# -*- coding:utf-8 -*-
#!python3
#導入minidom
from xml.dom import minidom
# 1.創(chuàng)建DOM樹對象
dom=minidom.Document()
# 2.創(chuàng)建根節(jié)點。每次都要用DOM對象來創(chuàng)建任何節(jié)點。
root_node=dom.createElement('root')
# 3.用DOM對象添加根節(jié)點
dom.appendChild(root_node)
# 用DOM對象創(chuàng)建元素子節(jié)點
book_node=dom.createElement('book')
# 用父節(jié)點對象添加元素子節(jié)點
root_node.appendChild(book_node)
# 設置該節(jié)點的屬性
book_node.setAttribute('price','199')
name_node=dom.createElement('name')
root_node.appendChild(name_node)
# 也用DOM創(chuàng)建文本節(jié)點,把文本節(jié)點(文字內(nèi)容)看成子節(jié)點
name_text=dom.createTextNode('計算機程序設計語言 第1版')
# 用添加了文本的節(jié)點對象(看成文本節(jié)點的父節(jié)點)添加文本節(jié)點
name_node.appendChild(name_text)
# 每一個結(jié)點對象(包括dom對象本身)都有輸出XML內(nèi)容的方法,如:toxml()--字符串, toprettyxml()--美化樹形格式。
try:
with open('dom_write.xml','w',encoding='UTF-8') as fh:
# 4.writexml()第一個參數(shù)是目標文件對象,第二個參數(shù)是根節(jié)點的縮進格式,第三個參數(shù)是其他子節(jié)點的縮進格式,
# 第四個參數(shù)制定了換行格式,第五個參數(shù)制定了xml內(nèi)容的編碼。
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文件結(jié)果如下:
<?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)
# 獲取根節(jié)點
root=dom.documentElement
# 節(jié)點名稱
print(root.nodeName)
# 節(jié)點類型:'ELEMENT_NODE',元素節(jié)點; 'TEXT_NODE',文本節(jié)點; 'ATTRIBUTE_NODE',屬性節(jié)點
print(root.nodeType)
# 獲取某個節(jié)點下所有子節(jié)點,是個列表
print(root.childNodes)
# 通過dom對象或根元素,再根據(jù)標簽名獲取元素節(jié)點,是個列表
book=root.getElementsByTagName('book')[0]
# 獲取節(jié)點屬性
print(book.getAttribute('price'))
# 獲取某個元素節(jié)點的文本內(nèi)容,先獲取子文本節(jié)點,然后通過“data”屬性獲取文本內(nèi)容
name=root.getElementsByTagName('name')[0]
name_text_node=name.childNodes[0]
print(name_text_node.data)
# 獲取某節(jié)點的父節(jié)點
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
PS:這里再為大家提供幾款關(guān)于xml操作的在線工具供大家參考使用:
在線XML/JSON互相轉(zhuǎn)換工具:
http://tools.jb51.net/code/xmljson
在線格式化XML/在線壓縮XML:
http://tools.jb51.net/code/xmlformat
XML在線壓縮/格式化工具:
http://tools.jb51.net/code/xml_format_compress
XML代碼在線格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python操作xml數(shù)據(jù)技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
- Python xmltodict模塊安裝及代碼實例
- Python lxml模塊的基本使用方法分析
- Python3使用xml.dom.minidom和xml.etree模塊兒解析xml文件封裝函數(shù)的方法
- Python3.5內(nèi)置模塊之shelve模塊、xml模塊、configparser模塊、hashlib、hmac模塊用法分析
- Python利用lxml模塊爬取豆瓣讀書排行榜的方法與分析
- Python使用sax模塊解析XML文件示例
- python遠程調(diào)用rpc模塊xmlrpclib的方法
- Python3爬蟲爬取百姓網(wǎng)列表并保存為json功能示例【基于request、lxml和json模塊】
- Python基于lxml模塊解析html獲取頁面內(nèi)所有葉子節(jié)點xpath路徑功能示例
- Python利用ElementTree模塊處理XML的方法詳解
- python xml模塊的簡單使用
相關(guān)文章
Django模型修改及數(shù)據(jù)遷移實現(xiàn)解析
這篇文章主要介紹了Django模型修改及數(shù)據(jù)遷移實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08
詳解Python 多線程 Timer定時器/延遲執(zhí)行、Event事件
這篇文章主要介紹了Python 多線程 Timer定時器/延遲執(zhí)行、Event事件的相關(guān)知識,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06
Python開源自動化工具Playwright安裝及介紹使用
playwright-python是一個強大的Python庫,僅用一個API即可自動執(zhí)行Chromium、Firefox、WebKit等主流瀏覽器自動化操作,本文就詳細的介紹一下如何使用,感興趣的可以了解一下2021-12-12
Python 內(nèi)置變量和函數(shù)的查看及說明介紹
今天小編就為大家分享一篇Python 內(nèi)置變量和函數(shù)的查看及說明介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python統(tǒng)計中文字符數(shù)量的兩種方法
今天小編就為大家分享一篇python統(tǒng)計中文字符數(shù)量的兩種方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01

