1 import xml.sax 2 import sys 3 get_record=[] 4 class GetStorehouse(xml.sax.ContentHandler): 5 def __init__(self): 6 self.CurrentData="" 7 self.title="" 8 self.name="" 9 self.amount="" 10 self.price="" 11 def startElement(self,label,attributes): 12 self.CurrentData=label 13 if label=="goods": #子元素的开始标签 14 category=attributes["category"] 15 return category 16 def endElement(self,label): 17 global get_record 18 if self.CurrentData=="title": 19 get_record.append(self.title) 20 elif self.CurrentData=="name": 21 get_record.append(self.name) 22 elif self.CurrentData=="amount": 23 get_record.append(self.amount) 24 elif self.CurrentData=="price": 25 get_record.append(self.price) 26 def characters(self,content): 27 if self.CurrentData=="title": 28 self.title=content 29 elif self.CurrentData=="name": 30 self.name=content 31 elif self.CurrentData=="amount": 32 self.amount=content 33 elif self.CurrentData=="price": 34 self.price=content 35 #============================================================================= 36 parser=xml.sax.make_parser() #创建一个解析器的XMLReader对象 37 parser.setFeature(xml.sax.handler.feature_namespaces,0)#从XML文件解析数据,关闭从命名空间解析 38 Handler=GetStorehouse() #建立事件处理器实例 39 parser.setContentHandler(Handler) 40 parser.parse("storehouse.xml") 41 print(get_record)
['淡水鱼', '鲫鱼', '18', '8', ' ', '温带水果', '猕猴桃', '10', '10', ' ', ' ']