Python-使用ElementTree解析带有重复标记的XML
我有以下XML内容:Python-使用ElementTree解析带有重复标记的XML,python,xml,parsing,xml-parsing,elementtree,Python,Xml,Parsing,Xml Parsing,Elementtree,我有以下XML内容: <plist version="1.0"> <dict> <key>Version</key><integer>1</integer> <key>Sub Version</key><integer>2</integer> <dict> <key>1</key> &l
<plist version="1.0">
<dict>
<key>Version</key><integer>1</integer>
<key>Sub Version</key><integer>2</integer>
<dict>
<key>1</key>
<dict>
<key>ID</key><integer>1</integer>
<key>Name</key><string>Frank</string>
</dict>
<key>2</key>
<dict>
<key>ID</key><integer>2</integer>
<key>Name</key><string>Richard</string>
</dict>
<key>3</key>
<dict>
<key>ID</key><integer>3</integer>
<key>Name</key><string>Sophia</string>
</dict>
</dict>
<key>Persons</key>
<array>
<dict>
<key>Name</key><string>Persons</string>
<key>Description</key><string>empty</string>
</dict>
</array>
</dict>
</plist>
我想要的输出:
Frank
Richard
Sophia
有人知道如何使用这些标签访问这些值吗?改用lxml:
from lxml import etree
plist = """your xml above"""
doc = etree.fromstring(plist)
doc.xpath('//dict/dict/key["name"]/following-sibling::string/text()')
输出:
['Frank', 'Richard', 'Sophia']
请编辑您的问题,以包括迄今为止的Python代码以及预期的输出。谢谢如果在Mac上,请查看感谢您的帮助!关于信息,我注意到它也可以(更好?)使用键[text()=“Name”]而不是键[“Name”],后者在做了一些修改后似乎并没有真正考虑“Name”值tests@Reedy是的,xpath的魔力:
key[text()=“Name”]
,key[“Name”]
和key[.=“Name”]
是等价的,所有这些都可以工作。。。
['Frank', 'Richard', 'Sophia']