Example #1
0
    def test_data_type(self):
        ns_map = {"bar": "xsdata"}
        attrs = {}
        self.assertEqual(DataType.STRING, ParserUtils.data_type(attrs, ns_map))

        ns_map = {"xs": Namespace.XS.uri}
        attrs = {QNames.XSI_TYPE: "xs:foo"}
        self.assertEqual(DataType.STRING, ParserUtils.data_type(attrs, ns_map))

        attrs = {QNames.XSI_TYPE: "xs:float"}
        self.assertEqual(DataType.FLOAT, ParserUtils.data_type(attrs, ns_map))
Example #2
0
    def bind(self, qname: str, text: NoneStr, tail: NoneStr, objects: List) -> bool:
        obj: Any = None
        if self.has_children:
            obj = AnyElement(
                qname=qname,
                text=ParserUtils.normalize_content(text),
                tail=ParserUtils.normalize_content(tail),
                attributes=ParserUtils.parse_any_attributes(self.attrs, self.ns_map),
                children=ParserUtils.fetch_any_children(self.position, objects),
            )
            objects.append((self.var.qname, obj))
        else:
            var = self.var
            ns_map = self.ns_map
            datatype = ParserUtils.data_type(self.attrs, self.ns_map)
            obj = ParserUtils.parse_value(text, [datatype.type], var.default, ns_map)

            if var.derived:
                obj = DerivedElement(qname=qname, value=obj)

            objects.append((qname, obj))

            if self.mixed:
                tail = ParserUtils.normalize_content(tail)
                if tail:
                    objects.append((None, tail))

        return True