在Python如何解析xml文件 在Python中__init__.py文件的作用 在Python中如何遍历目录中所有文件 在Python如何解析xml文件 问题描述 我在包含xml的数据库中有很多行,我正在尝试编写一个Python脚本,该脚本将遍历这些行并计算特定节点属性的实例数量。例如,我的树看起来像: <foo> <bar> <type foobar="1"/> <type foobar="2"/> </bar> </foo> 如何使用Python访问XML中的属性1和2? 使用Python api ElementTree import xml.etree.ElementTree e = xml.etree.ElementTree.parse('thefile.xml').getroot() for atype in e.findall('type'): print(atype.get('foobar')) 使用minidom xml文件 <data> <items> <item name="item1"></item> <item name="item2"></item> <item name="item3"></item> <item name="item4"></item> </items> </data> Python from xml.dom import minidom xmldoc = minidom.parse('items.xml') itemlist = xmldoc.getElementsByTagName('item') print(len(itemlist)) print(itemlist[0].attributes['name'].value) for s in itemlist: print(s.attributes['name'].value) 输出 4 item1 item1 item2 item3 item4 使用BeautifulSoup from bs4 import BeautifulSoup x="""<foo> <bar> <type foobar="1"/> <type foobar="2"/> </bar> </foo>""" y=BeautifulSoup(x) >>> y.foo.bar.type["foobar"] u'1' >>> y.foo.bar.findAll("type") [<type foobar="1"></type>, <type foobar="2"></type>] >>> y.foo.bar.findAll("type")[0]["foobar"] u'1' >>> y.foo.bar.findAll("type")[1]["foobar"] u'2' 各种解析xml文件的效率 library time space xml.dom.minidom (Python 2.1) 6.3 s 80000K gnosis.objectify 2.0 s 22000k xml.dom.minidom (Python 2.4) 1.4 s 53000k ElementTree 1.2 1.6 s 14500k ElementTree 1.2.4/1.3 1.1 s 14500k cDomlette (C extension) 0.540 s 20500k PyRXPU (C extension) 0.175 s 10850k libxml2 (C extension) 0.098 s 16000k readlines (read as utf-8) 0.093 s 8850k cElementTree (C extension) --> 0.047 s 4900K <-- readlines (read as ascii) 0.032 s 5050k 在Python中__init__.py文件的作用 在Python中如何遍历目录中所有文件