假设我们有以下 xml 字符串
xml_string = '''
<Wikimedia>
<projects>
<project name="Wikipedia" launch="2001-01-05">
<editions>
<edition language="English">en.wikipedia.org</edition>
<edition language="German">de.wikipedia.org</edition>
<edition language="French">fr.wikipedia.org</edition>
<edition language="Polish">pl.wikipedia.org</edition>
<edition language="Spanish">es.wikipedia.org</edition>
</editions>
</project>
<project name="Wiktionary" launch="2002-12-12">
<editions>
<edition language="English">en.wiktionary.org</edition>
<edition language="French">fr.wiktionary.org</edition>
<edition language="Vietnamese">vi.wiktionary.org</edition>
<edition language="Turkish">tr.wiktionary.org</edition>
<edition language="Spanish">es.wiktionary.org</edition>
</editions>
</project>
</projects>
</Wikimedia>
'''
在元素树中
tree = ET.ElementTree(ET.fromstring(xml_string))
root = tree.getroot()
我正在尝试使用完整路径搜索来获取其元素,例如
root.findall('Wikimedia/projects/project/editions/edition')
但这会返回一个空列表
[]
。
如何使用完整路径(包括起始节点
Wikimedia
)来执行此操作?
您正在
findall()
上调用 root
,即 Wikimedia
元素。如果您只需从路径中删除Wikimedia/
,它就可以工作:
ed = root.findall('projects/project/editions/edition')
此外,创建
root
对象的代码也可以简化。只需使用
root = ET.fromstring(xml_string)