python---xml--ET
1 #!/usr/bin/env python 2 # -*- encoding:utf-8 -*- 3 from xml.etree import ElementTree as ET 4 5 6 def parseStr(): 7 """ 8 读取xml 方式:解析字符串 只读不可写入 9 :return: 10 """ 11 root = ET.XML(open("doc.xml", "r", encoding="utf-8").read()) 12 print(root) 13 print(dir(root)) 14 for node in root: 15 print(node, type(node)) 16 print(node.tag, node.attrib) 17 18 19 def parseXML(): 20 """ 21 直接解析xml "rw" 22 :return: 23 """ 24 tree = ET.parse("doc.xml") 25 root = tree.getroot() 26 print(root.tag, type(root)) 27 branch = root.find("year").text 28 print(branch, type(branch)) 29 print(dir(root)) 30 for node in root.iter("year"): 31 new_year = int(node.text) + 1 32 node.text = str(new_year) 33 # 给节点添加属性 34 node.set("age", "22") 35 print(str(new_year)) 36 del node.attrib["age"] 37 tree.write("doc.xml") 38 39 40 def create_xml(): 41 """ 42 生成xml文件 43 :return: 44 """ 45 # create root 46 new_xml = ET.Element("nameList") 47 # create children 48 name1 = ET.SubElement(new_xml, "name", attrib={"enrolled": "yes"}) 49 age1 = ET.SubElement(name1, "age", attrib={"checked": "no"}) 50 age1.text = "21" 51 sex1 = ET.SubElement(name1, "sex") 52 sex1.text = "女" 53 name2 = ET.SubElement(new_xml, "name", attrib={"enrolled": "no"}) 54 age2 = ET.SubElement(name2, "age") 55 # 给age2赋值 56 age2.text = "22" 57 # create file object 58 et = ET.ElementTree(new_xml) 59 # create file 60 et.write("test.xml", encoding="utf-8", xml_declaration=True) 61 62 63 if __name__ == '__main__': 64 #parseXML() 65 create_xml()
格式化xml:
from xml.dom import minidom
def write_pretty(root):
# 元素节点转换成字符串
str = ET.tostring(root)
# 重新解析字符串
reparsed = minidom.parseString(str)
# 带缩进
new_str = reparsed.toprettyxml(indent="\t")
# 创建文件
f = open("test.xml", "w", encoding="utf-8")
# 将xml内容写入文件
f.write(new_str)
f.close()
浙公网安备 33010602011771号