: > > I want to remove an unused namespace declaration from the root element > > of an ElementTree in lxml. > > > [...] I'm reduced to sticking the output through str.replace() ... > > which is somewhat inelegant. > > And also a bit error prone (unless you are sure the replaced string really > only occurs where you want to replace it).
"Nada es seguro" ... but it does seem unlikely that ' xmlns:someprefix="urn:foo:bar"' will appear in the content. Not impossible though, I suppose. If I want to try and make sure I only catch it as an element's attribute, that leads me to a regex, which seems an even less clever idea. > You can try this: > > root = etree.parse(...).getroot() > new_root = etree.Element(root.tag, root.attrib) > new_root[:] = root[:] > > Note, however, that this will not copy root-level PIs or internal DTD subsets. > But you can copy PIs and comments by hand. Thanks. I considered copying the tree, but didn't bother trying it as I would expect it to be fairly expensive. Maybe no more expensive than a regex though. I'll take a look ... -[]z. -- http://mail.python.org/mailman/listinfo/python-list