import os
from json import loads
from dicttoxml import dicttoxml
from xml.dom.minidom import parseString


"""
os.getcwd()
用于获取当前路径；
file_list[-1]
用于获取文件的后缀；
dom.toprettyxml()
用于将str修改为更美观的格式
dicttoxml用于将字典转换为xml
"""

def jsonToXml(json_path, xml_path):
    # @abstract: transfer json file to xml file
    # json_path: complete path of the json file
    # xml_path: complete path of the xml file
    with open(json_path, 'r', encoding='UTF-8')as json_file:
        load_dict = loads(json_file.read())
    # print(load_dict)
    my_item_func = lambda x: 'Annotation'
    xml = dicttoxml(load_dict, custom_root='Annotations', item_func=my_item_func, attr_type=False)
    dom = parseString(xml)
    # print(dom.toprettyxml())
    # print(type(dom.toprettyxml()))
    with open(xml_path, 'w', encoding='UTF-8')as xml_file:
        xml_file.write(dom.toprettyxml())


def json_to_xml(json_dir, xml_dir):
    # transfer all json file which in the json_dir to xml_dir
    if (os.path.exists(xml_dir) == False):
        os.makedirs(xml_dir)
    dir = os.listdir(json_dir)
    for file in dir:
        file_list = file.split(".")
        if (file_list[-1] == 'json'):
            jsonToXml(os.path.join(json_dir, file), os.path.join(xml_dir, file_list[0] + '.xml'))


if __name__ == '__main__':
    # transfer json files in current directory

    json_dir = '/home/zhangwei/NewDisk/zhangwei/DL/json_xml_transfer/json2xml/origin_json'
    xml_dir = '/home/zhangwei/NewDisk/zhangwei/DL/json_xml_transfer/json2xml/result_xml'

    # j_dir = os.getcwd()
    # x_dir = os.getcwd()
    json_to_xml(json_dir, xml_dir)
