как lxml xpath передать значения атрибута, используя переменные - PullRequest
0 голосов
/ 21 ноября 2018

Как передать attrbute в качестве переменных, когда я жестко кодирую значения, я получаю результаты, но не при назначении переменной

<rootdata>
<Config id="1A" cId="1A13" name="Confg 13">
    <Assignment _id="id1eF"  of_end_="id1588"/>
    <Assignment _id="id1F0"  of_end_="id1598" />
</Config>

<Config id="2A" cId="2A14" name="Confg 14">
    <Assignment _id="id1eF"  of_end_="id151"/>
    <Assignment _id="id1F0"  of_end_="id152" />
</Config>


<Config id="3A" cId="3A15" name="Confg 14">
    <Assignment _id="id1eF"  of_end_="id153"/>
    <Assignment _id="id1F0"  of_end_="id154" />
</Config>
<ele id="id1ef" name="name1"/>
<ele id="id1f0 name="name2"/>
</rootdata>

tree = ET.parse('data.xml')
root = tree.getroot()


for config in root.findall("./Config/[@cId='1A13']/Assignment"):    

    temp_id=config.attrib['_id']
    temp_of_end=config.attrib['of_end_']
    print(temp_id,tmp_of_end)

, когда я жестко кодирую значение для cId, оно работает, но я хочу передатьпеременная моя переменная

for config in root.findall("./Config/[@cId=myvariable]/Assignment"): 

1 Ответ

0 голосов
/ 21 ноября 2018

Попробуйте передать переменную, как показано ниже:

myvariable = "1A13"
root.findall("./Config/*[@cId='{}']/Assignment".format(myvariable))
...