python解析xml文件

Rookiekk 2018-04-01 12:11:04
import xml.sax

dict = {}
class ButterflyHandler(xml.sax.ContentHandler):
def __init__(self):
self.filename = ''
self.path = ''
self.butterflyname = ''

def startElement(self, tag, atr):
self.CurrentData = tag #这里的currentdata 在类的前边没有定义,能直接出来?
if tag == 'annotation':
print('annotation:')
def endElement(self, tag):
if tag == 'filename':
dict['filename'] = self.filename
#print('filename:',self.filename)
elif tag == 'path':
dict['path'] = self.path
#print('path:',self.path)
def characters(self, content):
if self.CurrentData == 'filename':
self.filename = content
elif self.CurrentData == 'path':
self.path = content
elif self.CurrentData = 'name':
self.butterflyname = content

if __name__ == '__main__':
parser = xml.sax.make_parser()
parser.setFeature(xml.sax.handler.feature_namespaces,0)
handler = ButterflyHandler()
print(handler)
parser.setContentHandler(handler)
parser.parse('IMG_000001.xml')
for key in dict:
print(key ,dict[key])

问题在 注释处,不明白怎么突然出来一个self.currentdata 求大神指点啊
...全文
746 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
toznm00 2018-04-02
  • 打赏
  • 举报
回复
你可能__init__的理解不是很好,__init__你可以理解为调用类的时候会自动运行的一个函数 而不是说__init__做为初始化函数,要把所有包含的实例参数(无论是否是能被外部调用的参数)都在这里定义 是可以在类里面的任意一个函数里面设置实例参数进行定义的 可以参考 “安装路径/Lib/inspect.py”
DarkChampion 2018-04-01
  • 打赏
  • 举报
回复
没毛病啊 放在__init__里和startElement里有多大区别 在__init__里放一句self.CurrentData = None你才能理解吗?

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧