zoukankan      html  css  js  c++  java
  • python3 xml_to_dict、dict_to_xml等互相转换的方法

    from basic_config_vars.config_vars import moviesAllFilePath,moviesFilePath  #自定义的一些文件变量
    import xmltodict
    import json
    import os
    import traceback
    
    class XmlDict():
        def __init__(self):
            pass
        
        #初始化数据,传入参数1、xml文件路径 2、xml格式字符串 3、json字符串 4、dict字典
        def init_data(self,file_Str_Dict):
            if isinstance(file_Str_Dict,str) and os.path.isfile(file_Str_Dict):
                with open(file_Str_Dict) as fp:
                    self.data=fp.read()
            elif isinstance(file_Str_Dict,(str,dict)):
                self.data=file_Str_Dict
        
        def xml_to_dict(self,file_Str_Dict):
            self.init_data(file_Str_Dict)
            
            data_orderedD=xmltodict.parse(self.data)
            data_json=json.dumps(data_orderedD,indent=4)
            data_dict=json.loads(data_json)
            
            return data_dict
    
        def dicttoxml(self,file_Str_Dict):
            self.init_data(file_Str_Dict)
            if isinstance(self.data,str):
                try:
                    self.data=json.loads(self.data)
                except:
                    print('传入参数非json或dict类型,无法转换。')
                    traceback.print_exc()
                    return None
            return xmltodict.unparse(self.data,pretty=True,encoding='gb2312')
    
    if __name__=='__main__':
        #obj=XmlDict(moviesFilePath)
    
        obj = XmlDict()
        d=obj.xml_to_dict(moviesAllFilePath)
        print(d)
        print('*'*30)
        #print(obj.dicttoxml(json.dumps(d)))
        print(obj.dicttoxml('{"nihao":{"ty":"leixing","fuoran":"feichang"}}'))
        print('hahaha')


    XMl文件参考:

    <collection shelf="New Arrivals">
        <movie title="Enemy Behind">
           <type>War, Thriller</type>
           <format>DVD</format>
           <year>2003</year>
           <rating>PG</rating>
           <stars>10</stars>
           <description>Talk about a US-Japan war</description>
        </movie>
        <movie title="Transformers">
           <type>Anime, Science Fiction</type>
           <format>DVD</format>
           <year>1989</year>
           <rating>R</rating>
           <stars>8</stars>
           <description>A schientific fiction</description>
        </movie>
           <movie title="Trigun">
           <type>Anime, Action</type>
           <format>DVD</format>
           <episodes>4</episodes>
           <rating>PG</rating>
           <stars>10</stars>
           <description>Vash the Stampede!</description>
        </movie>
        <movie title="Ishtar">
           <type>Comedy</type>
           <format>VHS</format>
           <rating>PG</rating>
           <stars>2</stars>
           <description>Viewable boredom</description>
        </movie>
    </collection>
  • 相关阅读:
    信息安全系统设计基础第十二周学习总结
    day07-流程控制之while循环
    day07-深浅拷贝
    第一次小测
    day05-与用户交互与运算符
    day05学习笔记-垃圾回收机制
    day04学习笔记-变量
    day03-python-学习笔记
    P4323-[JSOI2016]独特的树叶【换根dp,树哈希】
    CF990G-GCD Counting【dfs】
  • 原文地址:https://www.cnblogs.com/xiaoxiao075/p/11132393.html
Copyright © 2011-2022 走看看