说明
1、DOM将整个XML读入内存,分析为树,因此占用内存大,分析慢。
它的优点是可以随意遍历树木的节点。
2、SAX是一种流动模式,边读边分析,占用内存小,分析快,缺点是需要自己处理事件。
一般来说,SAX优先考虑,因为DOM占用了太多的内存。
实例
fromxml.parsers.expatimportParserCreate classDefaultSaxHandler(object): defstart_element(self,name,attrs): print('sax:start_element:%s,attrs:%s'%(name,str(attrs))) defend_element(self,name): print('sax:end_element:%s'%name) defchar_data(self,text): print('sax:char_data:%s'%text) xml=r'''<?xmlversion="1.0"?> <ol> <li><ahref="/python">Python</a></li> <li><ahref="/ruby">Ruby</a></li> </ol> ''' handler=DefaultSaxHandler() parser=ParserCreate() parser.StartElementHandler=handler.start_element parser.EndElementHandler=handler.end_element parser.CharacterDataHandler=handler.char_data parser.Parse(xml) ///测试结果 sax:start_element:ol,attrs:{} sax:char_data: sax:char_data: sax:start_element:li,attrs:{} sax:start_element:a,attrs:{'href':'/python'} sax:char_data:Python sax:end_element:a sax:end_element:li sax:char_data: sax:char_data: sax:start_element:li,attrs:{} sax:start_element:a,attrs:{'href':'/ruby'} sax:char_data:Ruby sax:end_element:a sax:end_element:li sax:char_data: sax:end_element:ol
以上是python操作xml的两种方法,希望对大家有所帮助。更多Python学习指导:python基础教程
本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。