当前位置: 首页 > 图灵资讯 > 行业资讯> python操作xml的两种方法

python操作xml的两种方法

来源:图灵python
时间: 2024-07-04 14:42:33

说明

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电脑。