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()

  

posted on 2018-01-19 22:48  jovelove  阅读(246)  评论(0)    收藏  举报