Ich habe eine XML-Struktur, die ich suchen müssen:Python lxml - nicht bekommen Eltern
<instance>
<hostName>hostname1</hostName>
<port enabled="true">9010</port>
<metadata>
<branch>master</branch>
</metadata>
<vipAddress>vip.address.com</vipAddress>
</instance>
<instance>
<hostName>hostname2</hostName>
<port enabled="true">9011</port>
<metadata>
<branch>sub_branch</branch>
</metadata>
<vipAddress>vip2.address.com</vipAddress>
</instance>
Ich versuche, eine Suche über den Text im Zweig zu tun, dann die Großeltern Element erhalten und bekommen die vipAddress
und port
aber wenn ich den Code unten verwenden, wenn ich versuche, die vipAddress
drucken und die port
druckt alle von ihnen statt dem, die ich für wirklich war auf der Suche:
branch_name = 'master'
for record in tree.xpath('//branch/text()'):
if(record == branch_name):
branch = record.getparent()
target_environment = branch.xpath('//vipAddress/text()')
print(target_environment)
target_port = branch.xpath('//port/text()')
Beispiel:
Wenn ich für master
suchen statt target_environment=vip.address.com
und port=9011
Rückkehr wird es zurückkehren target_environment=[vip.address.com, vip2.address.com]
und port=[9010,9011]
Ich bin sicher, dass ich etwas einfach falsch mache ich kann einfach nicht sehen, was.
Dank, das funktioniert super! – len