使用完整路径从ElementTree获取值

问题描述 投票:0回答:1

假设我们有以下 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
)来执行此操作?

python xml elementtree
1个回答
0
投票

您正在

findall()
上调用
root
,即
Wikimedia
元素。如果您只需从路径中删除
Wikimedia/
,它就可以工作:

ed = root.findall('projects/project/editions/edition')

此外,创建

root
对象的代码也可以简化。只需使用

root = ET.fromstring(xml_string)
© www.soinside.com 2019 - 2024. All rights reserved.