Write etree to multiple files using xinclude

I've got a fairly complex xml config setup with multiple files xincluded. I'm trying to write a tool that allows me to replace certain values programmatically and write the modified file. I lxml.etree.parse() the file then xinclude(). I replace the appropriate text values and want to write the tree back to the filesystem using the original files. I figured out that I can locate the file containing the modified node with something like: ``` cur, top = node, node while cur.base == node.base: top, cur = cur, cur.getparent() with open(top.base, "wb") as f: f.write(et.tostring(top)) ``` However, any elements that have a different base are still written to that same file. Is there a way I can either write a whole tree such that anything with a different base gets written to the appropriate file and an xinclude added for that file? The only other solution I can think of, is to find any node with a base attribute, replace with with an xinclude and add the node to a list of items to write.
participants (1)
-
Trevor Clarke