#!/usr/bin/python
# Alternative Implementation with ElementTree XML Parser
xml = '''\
<Emps>
<Emp>
<Name>Raja</Name>
<Location>
<city>ABC</city>
<geocode>123</geocode>
<state>XYZ</state>
</Location>
<sal>100</sal>
<type>temp</type>
</Emp>
<Emp>
<Name>GsusRecovery</Name>
<Location>
<city>Torino</city>
<geocode>456</geocode>
<state>UVW</state>
</Location>
<sal>120</sal>
<type>perm</type>
</Emp>
</Emps>
'''
from xml.etree import ElementTree as ET
# tree = ET.parse('input.xml') # decomment to parse xml from file
tree = ET.ElementTree(ET.fromstring(xml))
root = tree.getroot()
for location in root.iter('Location'):
if location.find('city').text == 'Torino':
location.set("isupdated", "1")
location.find('city').text = 'MyCity'
location.find('geocode').text = '10.12'
location.find('state').text = 'MyState'
print ET.tostring(root, encoding='utf8', method='xml')
# tree.write('output.xml') # decomment if you want to write to file
IyEvdXNyL2Jpbi9weXRob24KIyBBbHRlcm5hdGl2ZSBJbXBsZW1lbnRhdGlvbiB3aXRoIEVsZW1lbnRUcmVlIFhNTCBQYXJzZXIKCnhtbCA9ICcnJ1wKPEVtcHM+CiAgICA8RW1wPgogICAgICAgIDxOYW1lPlJhamE8L05hbWU+CiAgICAgICAgPExvY2F0aW9uPgogICAgICAgICAgICA8Y2l0eT5BQkM8L2NpdHk+CiAgICAgICAgICAgIDxnZW9jb2RlPjEyMzwvZ2VvY29kZT4KICAgICAgICAgICAgPHN0YXRlPlhZWjwvc3RhdGU+CiAgICAgICAgPC9Mb2NhdGlvbj4KICAgICAgICA8c2FsPjEwMDwvc2FsPgogICAgICAgIDx0eXBlPnRlbXA8L3R5cGU+CiAgICA8L0VtcD4KICAgIDxFbXA+CiAgICAgICAgPE5hbWU+R3N1c1JlY292ZXJ5PC9OYW1lPgogICAgICAgIDxMb2NhdGlvbj4KICAgICAgICAgICAgPGNpdHk+VG9yaW5vPC9jaXR5PgogICAgICAgICAgICA8Z2VvY29kZT40NTY8L2dlb2NvZGU+CiAgICAgICAgICAgIDxzdGF0ZT5VVlc8L3N0YXRlPgogICAgICAgIDwvTG9jYXRpb24+CiAgICAgICAgPHNhbD4xMjA8L3NhbD4KICAgICAgICA8dHlwZT5wZXJtPC90eXBlPgogICAgPC9FbXA+CjwvRW1wcz4KJycnCgpmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUgYXMgRVQKIyB0cmVlID0gRVQucGFyc2UoJ2lucHV0LnhtbCcpICAjIGRlY29tbWVudCB0byBwYXJzZSB4bWwgZnJvbSBmaWxlCnRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5mcm9tc3RyaW5nKHhtbCkpCnJvb3QgPSB0cmVlLmdldHJvb3QoKQoKZm9yIGxvY2F0aW9uIGluIHJvb3QuaXRlcignTG9jYXRpb24nKToKICAgIGlmIGxvY2F0aW9uLmZpbmQoJ2NpdHknKS50ZXh0ID09ICdUb3Jpbm8nOgogICAgICAgIGxvY2F0aW9uLnNldCgiaXN1cGRhdGVkIiwgIjEiKQogICAgICAgIGxvY2F0aW9uLmZpbmQoJ2NpdHknKS50ZXh0ID0gJ015Q2l0eScKICAgICAgICBsb2NhdGlvbi5maW5kKCdnZW9jb2RlJykudGV4dCA9ICcxMC4xMicKICAgICAgICBsb2NhdGlvbi5maW5kKCdzdGF0ZScpLnRleHQgPSAnTXlTdGF0ZScKCnByaW50IEVULnRvc3RyaW5nKHJvb3QsIGVuY29kaW5nPSd1dGY4JywgbWV0aG9kPSd4bWwnKQojIHRyZWUud3JpdGUoJ291dHB1dC54bWwnKSAjIGRlY29tbWVudCBpZiB5b3Ugd2FudCB0byB3cml0ZSB0byBmaWxl