from xml.etree.ElementTree import ElementTree, Element


# xml换行


def indent(elem, level=0):
    i = "\n" + level*"\t"
    if len(elem):
        if not elem.text or not elem.text.strip():
            elem.text = i + "\t"
        if not elem.tail or not elem.tail.strip():
            elem.tail = i
        for elem in elem:
            indent(elem, level+1)
        if not elem.tail or not elem.tail.strip():
            elem.tail = i
    else:
        if level and (not elem.tail or not elem.tail.strip()):
            elem.tail = i


def add_xml(inforsDict,xmlFilePath):
    
    result = inforsDict

    for re in result:
        # if re['score'] > 0.5:

            # 获得标注信息
            ObjName = list(re.keys())[0]
            xmin = int(list(re.values())[0][0])
            ymin = int(list(re.values())[0][1])
            xmax = int(list(re.values())[0][2])
            ymax = int(list(re.values())[0][3])
            # xmax = xmin + r
            # ymax = ymin + z

            #if ObjName == 'person':

            tree = ElementTree()
            tree.parse(xmlFilePath)

            # 得到根目录
            root = tree.getroot()

            # 创建一级目录
            elementOjb = Element('object')

            elementBox = Element('bndbox')

            # 创建二级目录
            one = Element('name')
            one.text = ObjName  # 二级目录的值 #结果展示:<id>1</id>
            elementOjb.append(one)  # 将二级目录加到一级目录里

            two = Element('pose')
            two.text = "Unspecified"
            elementOjb.append(two)

            three = Element('truncated')
            three.text = "0"
            elementOjb.append(three)

            four = Element('difficult')
            four.text = "0"
            elementOjb.append(four)

            five = Element('xmin')
            five.text = str(xmin)
            elementBox.append(five)

            six = Element('xmax')
            six.text = str(xmax)
            elementBox.append(six)

            seven = Element('ymin')
            seven.text = str(ymin)
            elementBox.append(seven)

            eight = Element('ymax')
            eight.text = str(ymax)
            elementBox.append(eight)

            # 将一级目录加到根目录里
            elementOjb.append(elementBox)
            root.append(elementOjb)
            # 换行缩进
            indent(elementOjb)
            indent(elementBox)
            # 让结果保存进文件就可以了
            tree.write(xmlFilePath, encoding='utf-8', xml_declaration=True)