如何在Python中从Elementtree访问greatgrandchild元素?

时间:2018-10-06 15:54:33

标签: python elementtree

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

我尝试了以下代码,但未返回任何内容。

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>

1 个答案:

答案 0 :(得分:0)

由于<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)