Note: Doesn't work with Python 2.6 nor cElementTree. Tested with Python 2.7
$ python etree_overload.py
<main><sub1>Sub 1 Content</sub1><sub2>Sao Cacamba</sub2></main>
| #!/usr/bin/python | |
| # -*- coding: utf-8 -*- | |
| import xml.etree.ElementTree as et | |
| class OverloadedElement(et.Element): | |
| def __setattr__(self, name, value): | |
| if name == "text": | |
| value = value.replace(u'ú', 'u') | |
| value = value.replace(u'ô', 'o') | |
| value = value.replace(u'ã', 'a') | |
| value = value.replace(u'ç', 'c') | |
| super(et.Element, self).__setattr__(name, value) | |
| main = OverloadedElement('main') | |
| sub1 = et.SubElement(main, 'sub1') | |
| sub1.text = u"Súb 1 Côntent" | |
| sub2 = et.SubElement(main, 'sub2') | |
| sub2.text = u"São Caçamba" | |
| et.dump(main) |