dom树解析
from xml.dom.minidom import parse #导入模块
class Book(object): #创建一个book类
def __init__(self,name,jiage,zuozhe):
self.name=name
self.jiage=jiage
self.zuozhe=zuozhe
def __str__(self):
return "书名:"+self.name+" 价格:"+self.jiage+" 作者:"+self.zuozhe
doc=parse("aa.xml")#打开文件
books=[]
root=doc.documentElement #获取根节点
book=root.getElementsByTagName("book")#获取根节点下面的book节点
for i in book:
name = i.getElementsByTagName("name")[0].childNodes[0].data
jiage = i.getElementsByTagName("jiage")[0].childNodes[0].data
zuozhe = i.getElementsByTagName("zuozhe")[0].childNodes[0].data
books.append(Book(name,jiage,zuozhe))
for j in books:
print(j)sax解析
from xml.sax import parse#导入模块
import xml.sax
books=[] #创建一个空数组
class Book(object):
def __init__(self,name=None,jiage=None,zuozhe=None):
self.name=name
self.jiage=jiage
self.zuozhe=zuozhe
def __str__(self):
return "书名:"+self.name+" 价格:"+self.jiage+" 作者:"+self.zuozhe
class SaxSimple(xml.sax.ContentHandler):
def __init__(self,book=None,tag=None):
self.book=book
def startDocument(self):
print("start-----doc")
def startElement(self, name, attrs):
if name=="book":
self.book=Book()
self.tag=name
def characters(self, content):
if self.tag=="name":
self.book.name=content
elif self.tag=="jiage":
self.book.jiage=content
elif self.tag=="zuozhe":
self.book.zuozhe=content
def endElement(self, name):
if name=="book":
books.append(self.book)
self.book=None
self.tag=None
def endDocument(self):
print("end---doc")
parse("aa.xml",SaxSimple())
for book in books:
print(book)
elementtree解析
# 方法 作用
# parse(xml文件) #加载xml文件
# formstring(xmltext) #加载xml文件
# findall() #获取制定的所有节点
# find() #获取指定的节点
# getchildren() #获取儿子节点
# getiterator() #获取指定的所有节点与 findall类似
# 属性:
# 1、attrib:获取节点的属性及属性值(以元组的方式返回)
# 2、tag:获取节点名称
# 3、text:获取节点的文本值
class Book(object):
def __init__(self,name=None,jiage=None,zuozhe=None):
self.name=name
self.jiage=jiage
self.zuozhe=zuozhe
def __str__(self):
return "书名:"+self.name+" 价格:"+self.jiage+" 作者:"+self.zuozhe
books=[]
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
tree=ET.parse("aa.xml")
book=tree.findall("book")
booka=None
for b in book:
booka=Book()
booka.name=b.find("name").text
booka.jiage = b.find("jiage").text
booka.zuozhe = b.find("zuozhe").text
books.append(booka)
for i in books:
print(i)