zoukankan      html  css  js  c++  java
  • 如何将xml转为python中的字典

    如何将xml转为python中的字典

    import cElementTree as ElementTree
    
    class XmlListConfig(list):
        def __init__(self, aList):
            for element in aList:
                if element:
                    # treat like dict
                    if len(element) == 1 or element[0].tag != element[1].tag:
                        self.append(XmlDictConfig(element))
                    # treat like list
                    elif element[0].tag == element[1].tag:
                        self.append(XmlListConfig(element))
                elif element.text:
                    text = element.text.strip()
                    if text:
                        self.append(text)
    
    
    class XmlDictConfig(dict):
        '''
        Example usage:
    
        >>> tree = ElementTree.parse('your_file.xml')
        >>> root = tree.getroot()
        >>> xmldict = XmlDictConfig(root)
    
        Or, if you want to use an XML string:
    
        >>> root = ElementTree.XML(xml_string)
        >>> xmldict = XmlDictConfig(root)
    
        And then use xmldict for what it is... a dict.
        '''
        def __init__(self, parent_element):
            if parent_element.items():
                self.update(dict(parent_element.items()))
            for element in parent_element:
                if element:
                    # treat like dict - we assume that if the first two tags
                    # in a series are different, then they are all different.
                    if len(element) == 1 or element[0].tag != element[1].tag:
                        aDict = XmlDictConfig(element)
                    # treat like list - we assume that if the first two tags
                    # in a series are the same, then the rest are the same.
                    else:
                        # here, we put the list in dictionary; the key is the
                        # tag name the list elements all share in common, and
                        # the value is the list itself 
                        aDict = {element[0].tag: XmlListConfig(element)}
                    # if the tag has attributes, add those to the dict
                    if element.items():
                        aDict.update(dict(element.items()))
                    self.update({element.tag: aDict})
                # this assumes that if you've got an attribute in a tag,
                # you won't be having any text. This may or may not be a 
                # good idea -- time will tell. It works for the way we are
                # currently doing XML configuration files...
                elif element.items():
                    self.update({element.tag: dict(element.items())})
                # finally, if there are no child tags and no attributes, extract
                # the text
                else:
                    self.update({element.tag: element.text})

    用法示例:

    tree = ElementTree.parse('your_file.xml')
    root = tree.getroot()
    xmldict = XmlDictConfig(root)
    

    //或者,如果你想使用一个XML字符串:

    root = ElementTree.XML(xml_string)
    xmldict = XmlDictConfig(root)

    学习了
    https://cloud.tencent.com/developer/ask/51220
    http://code.activestate.com/recipes/410469-xml-as-dictionary/

  • 相关阅读:
    听说你的MES系统又失败了?
    GROUP BY你都不会!ROLLUP,CUBE,GROUPPING详解
    对 MES 感兴趣?赶紧看过来!
    SQL 高级查询(层次化查询,递归)
    智能制造概念
    简单又实用的分享!SharePoint母版页引用(实战)
    原创分享!SharePoint母版页修改(实战)
    入门者必看!SharePoint之CAML总结(实战)
    新手必看!Office Web Apps 2013 安装与配置(实战)
    SharePoint布局页引用(实战)
  • 原文地址:https://www.cnblogs.com/stono/p/9382281.html
Copyright © 2011-2022 走看看