Changeset 5
- Timestamp:
- 02/08/02 00:35:25 (7 years ago)
- Files:
-
- trunk/RBPrivate/Prototypes/Shane/XMLBuilder.py (modified) (3 diffs)
- trunk/RBPrivate/Prototypes/Shane/XMLObjectify.py (modified) (1 diff)
- trunk/RBPrivate/Prototypes/Shane/jabber.py (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBPrivate/Prototypes/Shane/XMLBuilder.py
r4 r5 9 9 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 10 10 11 class XMLBuilder :12 seperator = '.'11 class XMLBuilderMixin: 12 _seperator = '.' 13 13 e_no_class_registered = "No Class Registered" 14 14 15 def GetElementFactory(self, namespace, node): 15 def __init__(self): 16 self._elements, self._LastCompleteElement = [], None 17 18 def _GetElementFactory(self, namespace, node, attributes): 16 19 raise self.e_no_class_registered, '%s %s' % (namespace, node) 17 20 18 21 def _start_element(self, name, attributes): 19 idx = max(0, name.rfind(self. seperator))22 idx = max(0, name.rfind(self._seperator)) 20 23 namespace = name[0:idx] 21 node = name[idx + len(self. seperator):]22 build_factory = self. GetElementFactory(namespace, node)24 node = name[idx + len(self._seperator):] 25 build_factory = self._GetElementFactory(namespace, node, attributes) 23 26 object = build_factory(namespace, node, attributes) 24 27 if self._elements: … … 29 32 def _end_element(self, name): 30 33 self._elements[-1]._xmlInitComplete() 31 self. result = self._elements.pop()34 self._LastCompleteElement = self._elements.pop() 32 35 33 36 def _char_data(self, data): 34 37 self._elements[-1]._addData(data) 35 38 39 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 40 41 class XMLBuilder(XMLBuilderMixin): 36 42 def __call__(self, *args, **kw): 37 43 return apply(self.Parse, args, kw) 38 44 39 45 def Parse(self, *args, **kw): 40 self._elements, self. result = [], None41 parser = ParserCreate('ASCII', self. seperator)46 self._elements, self._LastCompleteElement = [], None 47 parser = ParserCreate('ASCII', self._seperator) 42 48 parser.returns_unicode = 0 43 49 parser.StartElementHandler = self._start_element … … 45 51 parser.CharacterDataHandler = self._char_data 46 52 apply(parser.Parse, args, kw) 47 result, self. result = self.result, None53 result, self._LastCompleteElement = self._LastCompleteElement, None 48 54 return result 49 55 trunk/RBPrivate/Prototypes/Shane/XMLObjectify.py
r4 r5 85 85 86 86 class Objectifier(XMLBuilder.XMLBuilder): 87 seperator = '.'88 87 objectified_class = _Objectified 89 88 Objectify = XMLBuilder.XMLBuilder.Parse
