~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/xml.py

  • Committer: Martin Pool
  • Date: 2005-09-13 06:11:39 UTC
  • Revision ID: mbp@sourcefrog.net-20050913061138-2704d6ba6a5bc5bd
- methods to deserialize objects from strings

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
# ElementTree bits
24
24
 
25
25
try:
26
 
    from util.cElementTree import ElementTree, SubElement, Element
 
26
    from util.cElementTree import (ElementTree, SubElement, Element,
 
27
                                   XMLTreeBuilder)
27
28
except ImportError:
28
 
    from util.elementtree.ElementTree import ElementTree, SubElement, Element
 
29
    from util.elementtree.ElementTree import (ElementTree, SubElement,
 
30
                                              Element, XMLTreeBuilder)
29
31
 
30
32
from bzrlib.inventory import ROOT_ID, Inventory, InventoryEntry
31
33
from bzrlib.revision import Revision, RevisionReference        
39
41
        elt = self._pack_inventory(inv)
40
42
        self._write_element(elt, f)
41
43
 
 
44
    def read_inventory_from_string(self, xml_string):
 
45
        return self._unpack_inventory(self._parse_string(xml_string))
 
46
 
42
47
    def read_inventory(self, f):
43
48
        return self._unpack_inventory(self._read_element(f))
44
49
 
48
53
    def read_revision(self, f):
49
54
        return self._unpack_revision(self._read_element(f))
50
55
 
 
56
    def read_revision_from_string(self, xml_string):
 
57
        return self._unpack_revision(self._parse_string(xml_string))
 
58
 
51
59
    def _write_element(self, elt, f):
52
60
        ElementTree(elt).write(f, 'utf-8')
53
61
        f.write('\n')
55
63
    def _read_element(self, f):
56
64
        return ElementTree().parse(f)
57
65
 
 
66
    def _parse_string(self, xml_string):
 
67
        parser = XMLTreeBuilder()
 
68
        parser.feed(xml_string)
 
69
        return parser.close()
 
70
        
58
71
 
59
72
 
60
73
class _Serializer_v4(Serializer):