python-操作xml格式的文件
xml文件的格式如下:
<data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year updated="yes">2009</year> <gdppc>141100</gdppc> <neighbor direction="E" name="Austria" /> <neighbor direction="W" name="Switzerland" /> </country> <country name="Singapore"> <rank updated="yes">5</rank> <year updated="yes">2012</year> <gdppc>59900</gdppc> <neighbor direction="N" name="Malaysia" /> </country> <country name="Panama"> <rank updated="yes">69</rank> <year updated="yes">2012</year> <gdppc>13600</gdppc> <neighbor direction="W" name="Costa Rica" /> <neighbor direction="E" name="Colombia" /> </country> </data>
# @File : 4.8.1xml模块.py # @Software: PyCharm import xml.etree.ElementTree as ET tree = ET.parse('xmltest.xml') root = tree.getroot() print(root.tag) #获取标签名 for child in root: # 遍历每一层标签 print('----------', child.tag, child.attrib) for i in child: # 遍历各层标签下的子标签和值 print(i.tag, i.text) print('-------------------------------------------') # 只遍历year节点 for node in root.iter('year'): print(node.tag, node.text)
# @File : 4.8.2xml文件增删改查.py # @Software: PyCharm import xml.etree.ElementTree as ET # 改值操作 tree = ET.parse('xmltest.xml') root = tree.getroot() # f.seek(0) for node in root.iter('year'): new_year = int(node.text) + 1 node.text = str(new_year) node.set('updated', 'yes') tree.write("xmltest.xml") # 删除值操作 tree = ET.parse('xmltest.xml') root = tree.getroot() # f.seek(0) for country in root.findall('country'): rank = int(country.find('rank').text) if rank > 50: root.remove(country) print('----------------------') for node in root.iter('rank'): print(node.tag, node.text) tree.write('output.xml')
# @File : 4.8.3自动创建xml文件.py # @Software: PyCharm import xml.etree.ElementTree as ET new_xml = ET.Element('country_list') # 生成一个节点名 # 生成第1个xml标签 name = ET.SubElement(new_xml, 'name', attrib={'enrolled': 'yes'}) age = ET.SubElement(name, 'age', attrib={'checked': 'no'}) sex = ET.SubElement(name, 'sex') sex.text = '33' # 生成第2个xml标签 name2 = ET.SubElement(new_xml, 'name', attrib={'enrolled': 'yes'}) age = ET.SubElement(name2, 'age', attrib={'checked': 'no'}) age = ET.SubElement(name2, 'sex') age.text = '19' et = ET.ElementTree(new_xml) # 生成档案 et.write('test.xml', encoding='utf-8', xml_declaration=True) ET.dump(new_xml) # 打印生成的格式