Python量化合约系统开发源码搭建

2023-03-24 09:34:08 浏览数 (1)

代码语言:javascript复制
def xml_parse(xml_str):

    class EchoTarget(object):

        def __init__(self):
            self.data_list = []
            self.data_dict = {}
            self.tag = ''
            self.value = ''
            self.attr = ''

        def start(self, tag, attrib):
            # start 在元素打开时触发。数据和元素的子元素仍不可用。
            self.tag = tag
            if dict(attrib):
                self.attr = dict(attrib)
            # print("start %s %r" % (tag, dict(attrib)))

        def end(self, tag):
            # end 在元素关闭时触发。所有元素的子节点,包括文本节点,现在都是可用的。
            if self.value:
                self.data_list.append(dict(
                    key=self.tag,
                    value=self.value,
                    attr=self.attr
                ))
            # print("end %s" % tag)

        def data(self, dt):
            # data 触发文本子节点并访问该文本。
            if isinstance(dt, str):
                if dt.strip():
                    self.value = dt
            # print("data %r" % dt)

        def comment(self, text):
            print("comment %s" % text)

        def close(self):
            # close 在解析完成后触发。
            return self.data_list

    # 解析xml字符串
    parser = etree.XMLParser(target=EchoTarget())
    return etree.XML(xml_str, parser)

0 人点赞