我正在使用一个看起来像下面代码的XML文件,真正有一个 spreekbeurt 会话,但我让它可读。我的目标是从所有 spreekbeurt 会话中获取 voorvoegsel 和 achternaam 部分中的文本。
<?xml version="1.0" encoding="utf-8"?>
<officiele-publicatie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://technische-documentatie.oep.overheid.nl/schema/op-xsd-2012-2">
<metadata>
<meta name="OVERHEIDop.externMetadataRecord" scheme="" content="https://zoek.officielebekendmakingen.nl/h-tk-20122013-4-2/metadata.xml" />
</metadata>
<handelingen>
<spreekbeurt nieuw="ja">
<spreker>
<voorvoegsels>De heer</voorvoegsels>
<naam>
<achternaam>Marcouch</achternaam>
</naam> (<politiek>PvdA</politiek>):</spreker>
<tekst status="goed">
<al>Sample Text</al>
</tekst>
</spreekbeurt>
</agendapunt>
</handelingen>
</officiele-publicatie>
我使用for循环遍历XML文件中的所有 spreekbeurt 元素。但是如何在我的XML文件中为每个spreekbeurt打印 voorvoegsels 和 achternaam ?
import xml.etree.ElementTree as ET
tree = ET.parse('...\directory')
root = tree.getroot()
for spreekbeurt in root.iter('spreekbeurt'):
print spreekbeurt.attrib
此代码打印:
{'nieuw': 'nee'}
{'nieuw': 'ja'}
{'nieuw': 'nee'}
{'nieuw': 'nee'}
但如何让孩子们从 spreekbeurt 中打印出来?
提前致谢!
答案 0 :(得分:1)
您可以使用find()
传递路径*到目标元素来查找父/祖先中的单个元素,例如:
>>> for spreekbeurt in root.iter('spreekbeurt'):
... v = spreekbeurt.find('spreker/voorvoegsels')
... a = spreekbeurt.find('spreker/naam/achternaam')
... print v.text, a.text
...
De heer Marcouch
*)实际上它不仅支持简单路径,还支持subset of XPath 1.0表达式。