add remove_element() method
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Mon, 23 May 2011 16:09:39 +0000 (12:09 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Mon, 23 May 2011 16:09:39 +0000 (12:09 -0400)
sfa/rspecs/rspec.py

index bf3db64..afc97bb 100755 (executable)
@@ -90,6 +90,21 @@ class RSpec:
                     if opt.text == value:
                         elem.remove(opt)
 
+    def remove_element(self, element_name, root_node = None):
+        """
+        Removes all occurences of an element from the tree. Start at 
+        specified root_node if specified, otherwise start at tree's root.   
+        """
+        if not root_node:
+            root_node = self.xml
+
+        elements = root_node.xpath('//rspecv2:%s | //%s' % (element_name, element_name), \
+                                                            self.namespaces)
+        for element in elements:
+            parent = element.getparent()
+            parent.remove(element)
+         
+
     def merge(self, in_rspec):
         pass