<p>另一种使用<code>lxml</code>的方法是:</p>
<pre><code>import lxml.etree as et
message = """<?xml version="1.0" encoding="UTF-8"?>
<TVAMain>
<ProgramDescription>
<ProgramLocationTable>
<Schedule value1="1234">
<ScheduleEvent>
<Program value2="1234567890" />
</ScheduleEvent>
<ScheduleEvent>
<Program value2="1234567891" />
</ScheduleEvent>
</Schedule>
<Schedule value1="5678">
<ScheduleEvent>
<Program value2="1234567892" />
</ScheduleEvent>
<ScheduleEvent>
<Program value2="1234567893" />
</ScheduleEvent>
</Schedule>
</ProgramLocationTable>
</ProgramDescription>
</TVAMain>"""
tree = et.fromstring(message)
schedules = tree.xpath("ProgramDescription/ProgramLocationTable")[0].findall("Schedule")
for schedule in schedules:
for event in schedule.findall("ScheduleEvent"):
program = event.find("Program")
print schedule.attrib["value1"],program.attrib["value2"]
</code></pre>
<p>这将打印出:</p>
^{pr2}$