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


一、DOM寫XML文件

    #導入minidom
    from xml.dom import minidom

    # 1.創建DOM樹對象
    dom=minidom.Document()
    # 2.創建根節點。每次都要用DOM對象來創建任何節點。
    root_node=dom.createElement('root')
    # 3.用DOM對象添加根節點
    dom.appendChild(root_node)

    # 用DOM對象創建元素子節點
    book_node=dom.createElement('book')
    # 用父節點對象添加元素子節點
    root_node.appendChild(book_node)
    # 設置該節點的屬性
    book_node.setAttribute('price','199')

    name_node=dom.createElement('name')
    root_node.appendChild(name_node)
    # 也用DOM創建文本節點,把文本節點(文字內容)看成子節點
    name_text=dom.createTextNode('計算機程序設計語言 第1版')
    # 用添加了文本的節點對象(看成文本節點的父節點)添加文本節點
    name_node.appendChild(name_text)

    # 每一個結點對象(包括dom對象本身)都有輸出XML內容的方法,如:toxml()--字符串, toprettyxml()--美化樹形格式。
    
    try:
        with open('dom_write.xml','w',encoding='UTF-8') as fh:
            # 4.writexml()第一個參數是目標文件對象,第二個參數是根節點的縮進格式,第三個參數是其他子節點的縮進格式,
            # 第四個參數制定了換行格式,第五個參數制定了xml內容的編碼。
            dom.writexml(fh,indent='',addindent='\t',newl='\n',encoding='UTF-8')
            print('OK')
    except Exception as err:
        print('錯誤:{err}'.format(err=err))

  結果如下:

<?xml version="1.0" encoding="utf8"?>
<root>
    <book price="99">
        <name>計算機程序設計語言 第1版</name>
    </book>
</root>

二、DOM解析XML文件

    from xml.dom import minidom
    # 第1步:parse()工廠方法獲取DOM對象
    dom=minidom.parse('dom_write.xml')

    # 第2步:要獲取某個元素節點的文本內容,就通過DOM對象,先獲取該元素節點,再獲取子文本節點,最后通過“data”屬性獲取文本內容(注意返回的是列表)
    author=dom.getElementsByTagName('author')[0].childNodes[0].data
    print(author)    
    
    
    # 其他屬性與方法:
    # 獲取根節點
    root=dom.documentElement
    # 節點名稱
    print(root.nodeName)
    # 節點類型:'ELEMENT_NODE',元素節點; 'TEXT_NODE',文本節點; 'ATTRIBUTE_NODE',屬性節點
    print(root.nodeType)
    # 獲取某個節點下所有子節點,是個列表
    print(root.childNodes)
    # 根據標簽名獲取元素節點,是個列表
    book=root.getElementsByTagName('book')
    # 獲取節點屬性
    print(book[0].getAttribute('price'))
    # 獲取某節點的父節點
    print(author.parentNode.nodeName)

  

  至此。轉載請注明出處,記得掃碼打賞支持哦,謝謝!

 


免責聲明!

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



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