def parse_element(self, element: Element, objects: List[Any]) -> Tuple: params: Dict = dict() ParserUtils.bind_element_attrs(params, self.meta, element) ParserUtils.bind_element_text(params, self.meta, element) ParserUtils.bind_element_children(params, self.meta, self.position, objects) ParserUtils.bind_element_wild_text(params, self.meta, element) qname = QName(element.tag) obj = self.meta.clazz(**params) return qname, obj
def test_bind_element_text_with_text_var(self, mock_parse_value): element = Element("foo") params = {} metadata = self.ctx.build(SizeType) var = metadata.find_var(mode=FindMode.TEXT) ParserUtils.bind_element_text(params, metadata, element) self.assertEqual({}, params) element.text = "foo" ParserUtils.bind_element_text(params, metadata, element) self.assertEqual({"value": "yes!"}, params) mock_parse_value.assert_called_once_with( var.types, element.text, var.default, element.nsmap, var.is_list, )
def parse_element(self, element: Element, objects: List[Any]) -> Tuple: """ Parse the given element attributes/text, find all child objects and mixed content and initialize a new dataclass instance. :return: A tuple of the object's qualified name and the new object. """ params: Dict = {} ParserUtils.bind_element_attrs(params, self.meta, element) ParserUtils.bind_element_text(params, self.meta, element) ParserUtils.bind_element_children(params, self.meta, self.position, objects) ParserUtils.bind_element_wild_text(params, self.meta, element) qname = QName(element.tag) obj = self.meta.clazz(**params) return qname, obj