added generic get() and add() methods
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Thu, 10 Nov 2011 02:27:35 +0000 (21:27 -0500)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Thu, 10 Nov 2011 02:27:35 +0000 (21:27 -0500)
sfa/rspecs/elements/element.py

index 6757f8a..2b27d9e 100644 (file)
@@ -7,3 +7,17 @@ class Element(dict):
         dict.__init__(self, self.fields) 
         self.update(fields)
 
+    @staticmethod
+    def get(element_class, xml, xpath, namespaces=None):
+        elems = xml.xpath(xpath, namespaces)
+        generic_elems = [element_class(elem.attrib, elem) for elem in elems]
+        return generic_elems
+
+
+    @staticmethod
+    def add(xml, element_class, name, obj):
+        elem = xml.add_element(name)
+        for field in element_class.fields:
+            if field in obj and obj[field]:
+                elem.set(field, obj[field])
+        return elem