def get_rule(node): """ Extracts the rule corresponding to the XML specification. :param node: topNode the XML node :return: the corresponding rule """ # extracting the rule type rule_type = RuleType.PROB if 'util=' in XMLUtils.serialize(node): rule_type = RuleType.UTIL # setting the rule identifier try: rule_id = node.attrib['id'] except: rule_id = 'rule' + str(XMLRuleReader._id_counter) XMLRuleReader._id_counter += 1 # creating the rule rule = Rule(rule_id, rule_type) priority = 1 if 'priority' in node.keys(): priority = int(node.attrib['priority']) # extracting the rule cases for child_node in node: if child_node.tag == 'case': condition = XMLRuleReader._get_condition(child_node) output = XMLRuleReader._get_output(child_node, rule_type, priority) rule.add_case(condition, output) elif XMLUtils.has_content(node): if node.tag == '#text': raise ValueError() return rule
def get_record(self): """ Serialises the XML recordings and returns the output. :return: the serialised XML content. """ return XMLUtils.serialize(self._root_node)