New submission from Bryce Nesbitt: ElementTree offers a wonderful and easy API for parsing XML... but if there is a namespace involved it suddenly gets ugly. This is a proposal to fix that. First an example:
------------------ !/usr/bin/python # Demonstrate awkward behavior of namespaces in ElementTree import xml.etree.cElementTree as ET xml_sample_one = """\ <?xml version="1.0"?> <presets> <thing stuff="some stuff"/> <thing stuff="more stuff"/> </presets> """ root = ET.fromstring(xml_sample_one) for child in root.iter('thing'): print child.tag xml_sample_two = """\ <?xml version="1.0"?> <presets xmlns="http://josm.openstreetmap.de/tagging-preset-1.0"> <thing stuff="some stuff"/> <thing stuff="more stuff"/> </presets> """ root = ET.fromstring(xml_sample_two) for child in root.iter('{http://josm.openstreetmap.de/tagging-preset-1.0}thing'): print child.tag ------------------ Because of the namespace in the 2nd example, a {namespace} name keeps {namespace} getting {namespace} in {namespace} {namespace} the way. Online there are dozens of question on how to deal with this, for example: http://stackoverflow.com/questions/11226247/python-ignore-xmlns-in-elementtree-elementtree With wonderfully syntactic solutions like 'item.tag.split("}")[1][0:]' ----- How about if I could set any root to have an array of namespaces to suppress: root = ET.fromstring(xml_sample_two) root.xmlns_at_root.append('{namespace}') Or even just a boolean that says I'll take all my namespaces without qualification? ---------- components: Extension Modules messages: 191894 nosy: brycenesbitt priority: normal severity: normal status: open title: ElementTree gets awkward to use if there is an xmlns type: enhancement versions: Python 2.7 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue18304> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com