I have this xml file
<?xml version='1.0' encoding='utf-8'?>
<Applications>
<AVBApplication name="AVB_1">
<Mode>A</Mode>
<AVBClass>CLASS_A</AVBClass>
<PayloadSize>11</PayloadSize>
<NoOfFrames>3</NoOfFrames>
<Source name="ES407" />
<Destinations>
<Dest name="ES403" />
<Dest name="ES416" />
<Dest name="ES410" />
</Destinations>
</AVBApplication>
...
I want to change
<Source name="ES407" />
tag's attrib value. I have a dict like this(merged_nodes_list)
{'B000': 'B0', 'B100': 'B1', 'B101': 'B2', 'B102': 'B3', 'B103': 'B4', 'B104': 'B5', 'B200': 'B6', 'B201': 'B7', 'B202': 'B8', 'B203': 'B9', 'B204': 'B10', 'B205': 'B11', 'B206': 'B12', 'B207': 'B13', 'B208': 'B14', 'B209': 'B15', 'B300': 'B16', 'B301': 'B17', 'B302': 'B18', 'B303': 'B19', 'B304': 'B20', 'B305': 'B21', 'B306': 'B22', 'B307': 'B23', 'B308': 'B24', 'B309': 'B25', 'B310': 'B26', 'B311': 'B27', 'B312': 'B28', 'B313': 'B29', 'B314': 'B30', 'B315': 'B31', 'B316': 'B32', 'B317': 'B33', 'B318': 'B34', 'B319': 'B35', 'ES400': 'ES36', 'ES401': 'ES37', 'ES402': 'ES38', 'ES403': 'ES39', 'ES404': 'ES40', 'ES405': 'ES41', 'ES406': 'ES42', 'ES407': 'ES43', 'ES408': 'ES44', 'ES409': 'ES45', 'ES410': 'ES46', 'ES411': 'ES47', 'ES412': 'ES48', 'ES413': 'ES49', 'ES414': 'ES50', 'ES415': 'ES51', 'ES416': 'ES52', 'ES417': 'ES53', 'ES418': 'ES54', 'ES419': 'ES55'}
As you can see i want to grap "ES407", search my dictionary('ES407': 'ES43' in this case) and replace to "ES43". Desired output should be
<Source name="ES43" />
for i in root.findall(".//AVBApplication/Source"):
for x, y in merged_nodes_list.items():
if i.attrib.values() == x:
print(y)
in that code if statement doesnt work. I tried debuging debug picture.As i can see
name={str}'ES407'
x={str}'ES407'
it looks like equivalent but apparently not. What am i missing ?