def elementFromTag(tree, tag, parent=None): tagName = tag[1] if not tagName: tagName = "" ns = None if tag[0]: if tag[0] in tree.prefixmap: ns = tree.prefixmap[tag[0]] else: nsattr = "xmlns:%s" % tag[0] if nsattr in tag[2]: ns = tag[2][nsattr] del tag[2][nsattr] tree.prefixmap[tag[0]] = ns elif "xmlns" in tag[2]: ns = tag[2]["xmlns"] del tag[2]["xmlns"] elif parent is not None: ns = parent.ns localName = tag if ns: tagName = "{%s}%s" % (ns, tagName) elem = Element(tagName, tag[2]) try: elem.start = tree.err_info elem.end = None except: # will happen when parsing with cElementTree pass # print elem.localName if parent is not None: parent.append(elem) tree.nodemap[elem] = parent tree.nodes.append(elem) if elem.ns is not None: if elem.ns not in tree.tags: tree.tags[elem.ns] = {} tree.tags[elem.ns][elem.localName] = elem return elem