问题描述 更改xml 文件中 <></> 之间的数值大小, 其中的一个dom 向下面一样 我们需要把ymin xmin ymax xmax 的值变成原来值得二分之一
<object>
<category>vehicle</category>
<type>bicycle</type>
<occluded>heavy-occ</occluded>
<truncated>truncated_0%</truncated>
<bndbox>
<xmin>941</xmin>
<ymin>1276</ymin>
<xmax>1075</xmax>
<ymax>1501</ymax>
</bndbox>
</object>
# -*- coding: utf-8 -*- from xml.etree.ElementTree import ElementTree,Element import xml.etree.ElementTree as ET tree = ET.parse('9999936_00000_d_0000001.xml') #tree = ET.parse('D:\python\venv1\output.xml') root = tree.getroot() print root.text #遍历文件所有的tag 为目标的值得标签 for elem in root.iter('xmin'): new_elem=(int(elem.text)/2+int(elem.text)%2) elem.text = str(new_elem) for elem in root.iter('ymin'): new_elem=(int(elem.text)/2+int(elem.text)%2) elem.text = str(new_elem) for elem in root.iter('xmax'): new_elem=(int(elem.text)/2+int(elem.text)%2) elem.text = str(new_elem) for elem in root.iter('ymax'): new_elem=(int(elem.text)/2+int(elem.text)%2) elem.text = str(new_elem) tree.write('output1.xml')
运行结果:
<object> <category>vehicle</category> <type>bicycle</type> <occluded>heavy-occ</occluded> <truncated>truncated_0%</truncated> <bndbox> <xmin>471</xmin> <ymin>638</ymin> <xmax>538</xmax> <ymax>751</ymax> </bndbox> </object>
tip1:
tree.write('output.xml')
因为需要保存修改值,但是没有搜到在源文件中更改并保存的函数所以保存在新的文件中
tip2;new_text=(int(elem.text)/2+int(elem.text)%2)由于需要四舍五入 ,在python中没找到用法 ,所以这样奇葩的写了官方API:https://docs.python.org/3/library/xml.etree.elementtree.html