首页 > 解决方案 > 在具有相同名称python XML的特定元素之间获取数据

问题描述

我对 python 很陌生,遇到了一些我似乎找不到解决方案的东西。这是下面的 XML 数据:

<root>
    <prototype name="one">
        <child>
            <attr_node name="attr01"/>
            <attr_node name="attr02"/>
            <attr_node name="attr03"/>
        </child>
    </prototype>
    <prototype name="two">
        <child>
            <attr_node name="attr01"/>
            <attr_node name="attr02"/>
        </child>
    </prototype>
</root>

所以我一直在尝试做的是仅从名称为“one”的“原型”标签中获取“子”标签中的数据。但是,我不知道如何专门从具有相同名称的元素中获取数据。

所需的输出是:

name="attr01"
name="attr02"
name="attr03"

非常感谢您的帮助!谢谢

标签: pythonxmlelement

解决方案


以下

import xml.etree.ElementTree as ET

xml = '''<root>
    <prototype name="one">
        <child>
            <attr_node name="attr01"/>
            <attr_node name="attr02"/>
            <attr_node name="attr03"/>
        </child>
    </prototype>
    <prototype name="two">
        <child>
            <attr_node name="attr01"/>
            <attr_node name="attr02"/>
        </child>
    </prototype>
</root>'''

root = ET.fromstring(xml)
attrs =  [a.attrib['name'] for a in root.find('.//prototype[@name="one"]').findall('./child/attr_node')]
print(attrs)

输出

['attr01', 'attr02', 'attr03']

推荐阅读