如何从 python 中的 Elementtree 访问曾孙元素?

How to access greatgrandchild elements from Elementtree in python?

我在 python 中使用元素树访问曾孙时遇到困难。 具体来说,我想访问 Ev、Ec、St、DU 和 Si 的树。完整的 xml 附在该线程的底部。

我试过下面的代码,但是return什么都没有。

import xml.etree.ElementTree as ET
tree = ET.parse('shhs_eval.xml')
root = tree.getroot()
for ScoreEvent in root.findall('Sco'):
    Event = ScoreEvent.find('Ev').text
    Start = ScoreEvent.find('St').text
    print(Event,Start)

提前致谢

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <PSG>
    <Sof>Compumedics</Sof>
    <Ep>30</Ep>
    <Scs>
    <Sco>
        <Ev>Arousal</Ev>
        <Ec>Arousal|Arousal ()</Ec>
        <St>8062.4</St>
        <Du>22.8</Du>
        <Si>EMG</Si>
    </Sco>
    <Sco>
        <Ev>N1</Ev>
        <Evc>wl|Aw ()</Evc>
        <St>8062.4</St>
        <Du>22.8</Du>
        <Si>EMG</Si>
    </Sco>
    </Scs>
    </PSG>

由于 <Sco> 不是根的直接子节点,您必须使用 findall(.//<node>)(深度优先搜索)访问它。

import xml.etree.ElementTree as ET
tree = ET.parse('sshs_eval.xml')
root = tree.getroot()
for ScoreEvent in root.findall('.//Sco'):
    Event = ScoreEvent.find('Ev').text
    Start = ScoreEvent.find('St').text
    print(Event,Start)