Python 按键属性访问子级

Python 按键属性访问子级,python,xml.etree,Python,Xml.etree,使用xml.etree我需要通过键标识符访问元素 以身作则 <?xml version="1.0" encoding="utf-8" ?> <Models> <Model Id="1" Name="booname" Description="boo" Filter="b"> <ModelVariables> <Variable Id="1" Token="tothh" />

使用
xml.etree
我需要通过键标识符访问元素

以身作则

<?xml version="1.0" encoding="utf-8" ?>
<Models>
    <Model Id="1" Name="booname" Description="boo" Filter="b">
        <ModelVariables>
            <Variable Id="1" Token="tothh"  />
            <Variable Id="2" Token="avgtt"  />
        </ModelVariables>
        <Terms>
            <Term Id="1" Description="ln1"  Coefficient="0.24160834" />
            <Term Id="2" Description="ln2"  Coefficient="-0.09360441" />
        </Terms>
    </Model>
    <Model Id="2" Name="fooname" Description="foo" Filter="f">
        <Terms>
            <Term Id="1" Description="e1"  Coefficient="0.36310718" />
            <Term Id="2" Description="e2"  Coefficient="-0.24160834" />
        </Terms>
    </Model>
</Models>

如何根据id值访问元素?如果参数2被传递,那么访问model
fooname
的所有属性的最直接方法是什么


我尝试使用带有不同参数的
findtext
find
get
方法,但无法访问所需的元素

xml.etree.ElementTree
,但这足以通过属性的特定值获取元素:

import xml.etree.ElementTree as ET

data = """<?xml version="1.0" encoding="utf-8" ?>
<Models>
    <Model Id="1" Name="booname" Description="boo" Filter="b">
        <ModelVariables>
            <Variable Id="1" Token="tothh"  />
            <Variable Id="2" Token="avgtt"  />
        </ModelVariables>
        <Terms>
            <Term Id="1" Description="ln1"  Coefficient="0.24160834" />
            <Term Id="2" Description="ln2"  Coefficient="-0.09360441" />
        </Terms>
    </Model>
    <Model Id="2" Name="fooname" Description="foo" Filter="f">
        <Terms>
            <Term Id="1" Description="e1"  Coefficient="0.36310718" />
            <Term Id="2" Description="e2"  Coefficient="-0.24160834" />
        </Terms>
    </Model>
</Models>"""

root = ET.fromstring(data)

id_value = "2"
model = root.findall(".//Model[@Id='%s']" % id_value)[0]
print(model.attrib)

注意使用
.attrib
访问元素属性。

xml.etree.ElementTree
,但这足以通过属性的特定值获取元素:

import xml.etree.ElementTree as ET

data = """<?xml version="1.0" encoding="utf-8" ?>
<Models>
    <Model Id="1" Name="booname" Description="boo" Filter="b">
        <ModelVariables>
            <Variable Id="1" Token="tothh"  />
            <Variable Id="2" Token="avgtt"  />
        </ModelVariables>
        <Terms>
            <Term Id="1" Description="ln1"  Coefficient="0.24160834" />
            <Term Id="2" Description="ln2"  Coefficient="-0.09360441" />
        </Terms>
    </Model>
    <Model Id="2" Name="fooname" Description="foo" Filter="f">
        <Terms>
            <Term Id="1" Description="e1"  Coefficient="0.36310718" />
            <Term Id="2" Description="e2"  Coefficient="-0.24160834" />
        </Terms>
    </Model>
</Models>"""

root = ET.fromstring(data)

id_value = "2"
model = root.findall(".//Model[@Id='%s']" % id_value)[0]
print(model.attrib)
注意使用
.attrib
访问元素属性