comment on the existence of XmlElement
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 17 Nov 2011 15:20:32 +0000 (16:20 +0100)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 17 Nov 2011 15:20:32 +0000 (16:20 +0100)
implement __getattr__ so etree.Element methods and fields are
available to XmlElement for free

sfa/util/xml.py

index e0083fc..401cd6a 100755 (executable)
@@ -121,29 +121,26 @@ class XmlElement:
         else:
             self.element.remove(element)
 
-    def get(self, key, *args):
-        return self.element.get(key, *args)
-
-    def items(self): return self.element.items()
-
-    def set(self, key, value):
-        self.element.set(key, value)
-    
     def set_text(self, text):
         self.element.text = text
     
+    # Element does not have unset ?!?
     def unset(self, key):
         del self.element.attrib[key]
   
-    def iterchildren(self):
-        return self.element.iterchildren()
-     
     def toxml(self):
         return etree.tostring(self.element, encoding='UTF-8', pretty_print=True)                    
 
     def __str__(self):
         return self.toxml()
 
+    ### other method calls or attribute access like .text or .tag or .get 
+    # are redirected on self.element
+    def __getattr__ (self, name):
+        if not hasattr(self.element, name):
+            raise AttributeError, name
+        return getattr(self.element, name)
+
 class XML:
  
     def __init__(self, xml=None, namespaces=None):