18
18
"""XML externalization support."""
20
# "XML is like violence: if it doesn't solve your problem, you aren't
21
# using enough of it." -- various
23
# importing this module is fairly slow because it has to load several ElementTree bits
21
__copyright__ = "Copyright (C) 2005 Canonical Ltd."
22
__author__ = "Martin Pool <mbp@canonical.com>"
25
from cElementTree import ElementTree, SubElement, Element
25
from cElementTree import Element, ElementTree, SubElement
26
26
except ImportError:
27
from elementtree.ElementTree import ElementTree, SubElement, Element
31
"""Write object o to file f as XML.
33
o must provide a to_element method.
35
ElementTree(o.to_element()).write(f, 'utf-8')
39
def unpack_xml(cls, f):
40
return cls.from_element(ElementTree().parse(f))
27
from elementtree import Element, ElementTree, SubElement
30
from trace import mutter
34
raise Exception("XMLMixin.to_element must be overridden in concrete classes")
36
def write_xml(self, f):
37
ElementTree(self.to_element()).write(f, 'utf-8')
41
return cls.from_element(ElementTree().parse(f))
43
read_xml = classmethod(read_xml)