Python minidom模塊(DOM寫入和解析XML)


一、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)
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM