一、DOM寫XML文件
1 #導入minidom
2 from xml.dom import minidom
3
4 # 1.創建DOM樹對象
5 dom=minidom.Document()
6 # 2.創建根節點。每次都要用DOM對象來創建任何節點。
7 root_node=dom.createElement('root')
8 # 3.用DOM對象添加根節點
9 dom.appendChild(root_node)
10
11 # 用DOM對象創建元素子節點
12 book_node=dom.createElement('book')
13 # 用父節點對象添加元素子節點
14 root_node.appendChild(book_node)
15 # 設置該節點的屬性
16 book_node.setAttribute('price','199')
17
18 name_node=dom.createElement('name')
19 root_node.appendChild(name_node)
20 # 也用DOM創建文本節點,把文本節點(文字內容)看成子節點
21 name_text=dom.createTextNode('計算機程序設計語言 第1版')
22 # 用添加了文本的節點對象(看成文本節點的父節點)添加文本節點
23 name_node.appendChild(name_text)
24
25 # 每一個結點對象(包括dom對象本身)都有輸出XML內容的方法,如:toxml()--字符串, toprettyxml()--美化樹形格式。
26
27 try:
28 with open('dom_write.xml','w',encoding='UTF-8') as fh:
29 # 4.writexml()第一個參數是目標文件對象,第二個參數是根節點的縮進格式,第三個參數是其他子節點的縮進格式,
30 # 第四個參數制定了換行格式,第五個參數制定了xml內容的編碼。
31 dom.writexml(fh,indent='',addindent='\t',newl='\n',encoding='UTF-8')
32 print('寫入xml OK!')
33 except Exception as err:
34 print('錯誤信息:{0}'.format(err))
結果如下:
<?xml version="1.0" encoding="utf8"?>
<root>
<book price="99">
<name>計算機程序設計語言 第1版</name>
</book>
</root>
二、DOM解析XML文件
1 from xml.dom import minidom
2 with open('dom_write.xml','r',encoding='utf8') as fh:
3 # parse()獲取DOM對象
4 dom=minidom.parse(fh)
5 # 獲取根節點
6 root=dom.documentElement
7 # 節點名稱
8 print(root.nodeName)
9 # 節點類型:'ELEMENT_NODE',元素節點; 'TEXT_NODE',文本節點; 'ATTRIBUTE_NODE',屬性節點
10 print(root.nodeType)
11 # 獲取某個節點下所有子節點,是個列表
12 print(root.childNodes)
13 # 通過dom對象或根元素,再根據標簽名獲取元素節點,是個列表
14 book=root.getElementsByTagName('book')[0]
15 # 獲取節點屬性
16 print(book.getAttribute('price'))
17
18 # 獲取某個元素節點的文本內容,先獲取子文本節點,然后通過“data”屬性獲取文本內容
19 name=root.getElementsByTagName('name')[0]
20 name_text_node=name.childNodes[0]
21 print(name_text_node.data)
22
23 # 獲取某節點的父節點
24 print(name.parentNode.nodeName)

