Python - 使用 ElementTree 解析带有重复标签的 XML

Python - Parse XML with repeated tags using ElementTree

我有以下XML内容:

<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>

我很难检索名称,因为这个 XML 标签名称完全相同并且没有属性。 到目前为止,我已经尝试在 "second depth dict" 上使用迭代来访问它,但我无法检索到我想要的内容。

我得到的:

from xml.etree import ElementTree as et

tree = et.parse("file.xml")
root = tree.getroot()

for i in root.find('dict').find('dict').iter('dict'):
    print ([j.text for j in i])

我想要的输出:

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']