首页 / 知识
使用python自带的xml.dom创建和解析xml
2023-11-12 13:35:00
python中的xml.dom模块使用的就是传统的dom解析api和方法。所以也就不写什么了,主要就是练习敲敲代码,继续熟悉python。本文通过xml.dom.minidom创建一个xml文档,然后再解析出来,用以熟悉相关接口方法的使用。
创建一个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)方法可以优雅显示xml文档,但是要避免直接写入文本,否则会给解析带来麻烦,尽量使用自带的writexml方法。
生成的文档内容:
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)
以上内容为大家介绍了使用python自带的xml.dom创建和解析xml,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们
最新内容
相关内容
python的调用绑定方法和非绑定方法
python的调用绑定方法和非绑定方法,代码,方法,实例,第一,培训,时计,奇数,偶数,参数,定义,在Python中,如果用实例去调用方法,这种限制就被称为PyPython网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tcPython 3.6 中针对文件系统的神奇
Python 3.6 中针对文件系统的神奇方法,数字,代码,数据,标准,信息,培训,首次,工作,文件名,常数,Python3.6首次发布于2016年,尽管它已经发布了很为何你的Python代码应是扁平与稀疏
为何你的Python代码应是扁平与稀疏的,代码,培训,信息,观察,设计,工具,嵌套,闻闻,程序员,沉思,Python之禅之所以得名,正是由于它那简明扼要的规Python 之模块重载的五种方法
Python 之模块重载的五种方法,环境,培训,方法,模块,文件夹,例子,下面,内容,语句,请看,python环境准备新建一个foo文件夹,其下包含一个bar.py文如何提速优化python代码?
如何提速优化python代码?,代码,时间,数据,新增,写法,包装,情况,下来,面临,工作,Python是一种脚本语言,相比C/C++这样的编译语言,在效率和性能方Python 模块之输入不可见的密码
Python 模块之输入不可见的密码,密码,系统,情况,公共,位置,信息,电子,网上,认证,培训,密码对程序员来说尤其重要。你不应该在不加密的情况下提升Python数据分析能力的方法
提升Python数据分析能力的方法,分析,数据,工具,代码,时间,环境,报告,信息,培训,标准,1.Pandas分析包这个工具的好处是显而易见的。下面的动画python经典最短代码实现排序的功能
python经典最短代码实现排序的功能,代码,位置,数据,分析,时间,序列,元素,培训,下来,算法,冒泡排序:算法思想:1.比较相邻的元素,如果第一个比第二Python标准库之collections模块
Python标准库之collections模块,名字,标准,信息,电话号码,培训,工厂,位置,简介,异常,对象,collections模块简介collections是Python标准库里使用Python总结文本文章
使用Python总结文本文章,技术,平台,数字,文本,数据,培训,信息,价值,公司,时间,文本摘要涉及减少文本中的单词数量,同时保持其意义。它提高了效Python中字典合并的实现方法
Python中字典合并的实现方法,培训,结果,以上,版本,字典,方法,函数,下面,背景,发现,TableofContents背景Methon1:适用于Python3.5及以上版本呢M