- elements = root_node.xpath('%s ' % element_name, namespaces=self.namespaces)
- for element in elements:
- parent = element.getparent()
- parent.remove(element)
-
+ def get_rspec_element(self, element_type):
+ if element_type not in self.elements:
+ msg = "ElementType {} not registered for this rspec".format(
+ element_type)
+ raise InvalidRSpecElement(element_type, extra=msg)
+ return self.elements[element_type]
+
+ def get(self, element_type, filter=None, depth=0):
+ if filter is None:
+ filter = {}
+ elements = self.get_elements(element_type, filter)
+ elements = [self.xml.get_element_attributes(
+ elem, depth=depth) for elem in elements]
+ return elements
+
+ def get_elements(self, element_type, filter=None):
+ """
+ search for a registered element
+ """
+ if filter is None:
+ filter = {}
+ if element_type not in self.elements:
+ msg = "Unable to search for element {} in rspec, expath expression not found."\
+ .format(element_type)
+ raise InvalidRSpecElement(element_type, extra=msg)
+ rspec_element = self.get_rspec_element(element_type)
+ xpath = rspec_element.path + XpathFilter.xpath(filter)
+ return self.xml.xpath(xpath)