使用python自帶的xml.dom創(chuàng)建和解析xml
python中的xml.dom模塊使用的就是傳統(tǒng)的dom解析api和方法。所以也就不寫什么了,主要就是練習(xí)敲敲代碼,繼續(xù)熟悉python。本文通過xml.dom.minidom創(chuàng)建一個xml文檔,然后再解析出來,用以熟悉相關(guān)接口方法的使用。
創(chuàng)建一個xml文檔:
'''
Createdon2012-1-10
Createaxmldocument
@author:xiaojay
'''
fromxml.domimportminidom
doc=minidom.Document()
doc.appendChild(doc.createComment("Thisisasimplexml."))
booklist=doc.createElement("booklist")
doc.appendChild(booklist)
defaddBook(newbook):
book=doc.createElement("book")
book.setAttribute("id",newbook["id"])
title=doc.createElement("title")
title.appendChild(doc.createTextNode(newbook["title"]))
book.appendChild(title)
author=doc.createElement("author")
name=doc.createElement("name")
firstname=doc.createElement("firstname")
firstname.appendChild(doc.createTextNode(newbook["firstname"]))
lastname=doc.createElement("lastname")
lastname.appendChild(doc.createTextNode(newbook["lastname"]))
name.appendChild(firstname)
name.appendChild(lastname)
author.appendChild(name)
book.appendChild(author)
pubdate=doc.createElement("pubdate")
pubdate.appendChild(doc.createTextNode(newbook["pubdate"]))
book.appendChild(pubdate)
booklist.appendChild(book)
addBook({"id":"1001","title":"Anapple","firstname":"Peter","lastname":"Zhang","pubdate":"2012-1-12"})
addBook({"id":"1002","title":"Love","firstname":"Mike","lastname":"Li","pubdate":"2012-1-10"})
addBook({"id":"1003","title":"Steve.Jobs","firstname":"Tom","lastname":"Wang","pubdate":"2012-1-19"})
addBook({"id":"1004","title":"HarryPotter","firstname":"Peter","lastname":"Chen","pubdate":"2012-11-11"})
f=file("book.xml","w")
doc.writexml(f)
f.close()
通過doc.toprettyxml(indent,newl,encoding)方法可以優(yōu)雅顯示xml文檔,但是要避免直接寫入文本,否則會給解析帶來麻煩,盡量使用自帶的writexml方法。
生成的文檔內(nèi)容:
Peter
Zhang
2012-1-12
.................
解析該xml文檔:
'''
Createdon2012-1-10
Scanaxmldoc
@author:xiaojay
'''
fromxml.domimportminidom,Node
classbookscanner:
def__init__(self,doc):
forchildindoc.childNodes:
ifchild.nodeType==Node.ELEMENT_NODE\
andchild.tagName=="book":
bookid=child.getAttribute("id")
print"*"*20
print"Bookid:",bookid
self.handle_book(child)
defhandle_book(self,node):
forchildinnode.childNodes:
ifchild.nodeType==Node.ELEMENT_NODE:
ifchild.tagName=="title":
print"Title:",self.getText(child.firstChild)
ifchild.tagName=="author":
self.handle_author(child)
ifchild.tagName=="pubdate":
print"Pubdate:",self.getText(child.firstChild)
defgetText(self,node):
ifnode.nodeType==Node.TEXT_NODE:
returnnode.nodeValue
else:return""
defhandle_author(self,node):
author=node.firstChild
forchildinauthor.childNodes:
ifchild.nodeType==Node.ELEMENT_NODE:
ifchild.tagName=="firstname":
print"Firstname:",self.getText(child.firstChild)
ifchild.tagName=="lastname":
print"Lastname:",self.getText(child.firstChild)
doc=minidom.parse("book.xml")
forchildindoc.childNodes:
ifchild.nodeType==Node.COMMENT_NODE:
print"Conment:",child.nodeValue
ifchild.nodeType==Node.ELEMENT_NODE:
bookscanner(child)
以上內(nèi)容為大家介紹了使用python自帶的xml.dom創(chuàng)建和解析xml,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。

猜你喜歡LIKE
相關(guān)推薦HOT
更多>>
python中的filter函數(shù)功能是什么?
python中的filter函數(shù)功能是什么?在python中,面對眾多的數(shù)據(jù),我們要過濾篩選出我們需要的數(shù)據(jù)。python中的filter函數(shù)就是起到了過濾篩選的作...詳情>>
2023-11-10 20:37:27
pythontime模塊是什么
pythontime模塊是什么在python中使用時間,就免不了和time模塊打交道,另外兩個模塊這個暫時先不做介紹。做time模塊的使用上,我們可以用它來對...詳情>>
2023-11-10 15:53:16
python是什么編程語言
python是什么編程語言1、說明是一種面向?qū)ο蟆⒔忉屝陀嬎銠C程序設(shè)計語言,由GuidovanRossum于1989年底發(fā)明,第一個公開發(fā)行版發(fā)行于1991年。Pyt...詳情>>
2023-11-10 15:21:05
python異常處理的兩種技巧
python異常處理的兩種技巧1、傳遞異常有時我們會在捕捉到一個異常后重新引發(fā)它(傳遞異常),實現(xiàn)起來很簡單,使用不帶參數(shù)的raise語句即可。deff...詳情>>
2023-11-10 14:49:39熱門推薦
python中的filter函數(shù)功能是什么?
沸python delattr函數(shù)如何使用?
熱python中pdb模塊怎么用?
熱Python如何截圖保存?
新python?中缺少module怎么辦?
python strftime和strptime的不同分析
python time.strptime的格式化
python中@contextmanager是什么?
python對象的三要素是什么
pythonGIL在Python多線程的應(yīng)用
python如何對多個CSV文件進行讀取
pythonif嵌套命令如何理解?
python對列表進行永久性或臨時排序的方法
python生成器調(diào)用方法引發(fā)異常
技術(shù)干貨







快速通道 更多>>
-
課程介紹
點擊獲取大綱 -
就業(yè)前景
查看就業(yè)薪資 -
學(xué)習(xí)費用
了解課程價格 -
優(yōu)惠活動
領(lǐng)取優(yōu)惠券 -
學(xué)習(xí)資源
領(lǐng)3000G教程 -
師資團隊
了解師資團隊 -
實戰(zhàn)項目
獲取項目源碼 -
開班地區(qū)
查看來校路線