def __parse_xml_impl()

in alibabacloud-gateway-oss/util/python/alibabacloud_gateway_oss_util/client.py [0:0]


    def __parse_xml_impl(t, m):
        d = {t.tag: {} if t.attrib else None}
        children = list(t)
        if children:
            m = m[t.tag]
            mc = m[0] if isinstance(m, list) else m
            dd = defaultdict(list)
            for dc in [Client.__parse_xml_impl(c, mc) for c in children]:
                for k, v in dc.items():
                    dd[k].append(v)
            d = {t.tag: {k: v[0] if len(v) == 1 and not isinstance(mc[k], list) else v for k, v in dd.items() if k in mc}}

        if t.attrib:
            d[t.tag].update(('@' + k, v) for k, v in t.attrib.items())

        if t.text:
            text = t.text.strip()
            if children or t.attrib:
                if text:
                    d[t.tag]['#text'] = text
            else:
                d[t.tag] = text
        return d