python+selenium自動化軟體測試(第12章):Python讀寫XML文檔

來源:互聯網
上載者:User

標籤:模型   odi   text   擷取   span   嵌入   get   事件驅動   replace   

XML 即可延伸標記語言 (XML),它可以用來標記資料、定義資料類型,是一種允許使用者對自己的標記語言進 行定義的源語言。
xml 有如下特徵: 首先,它是有標籤對組成:<aa></aa> 標籤可以有屬性: <aa id=’123’></aa> 標籤對可以嵌入資料: <aa>abc</aa>
Python對XML文檔讀寫常用有幾個模組: 
(1) xml.etree.ElementTree 
ElementTree就像一個輕量級的DOM,具有方便友好的API。代碼可用性好,速度快,消耗記憶體少。
(2)xml.dom.* 
將XML資料在記憶體中解析成一個樹,通過對樹的操作來操作XML。
(3)xml.sax.* 

python 標準庫包含SAX解析器,SAX用事件驅動模型,通過在解析XML的過程中觸發一個個的事件並調用使用者定義的回呼函數來處理XML檔案。


寫入XML文檔

#coding:utf-8from xml.dom import minidom#寫入xml文檔的方法def create_xml_test(filename):    #建立xml文檔對象    xml=minidom.Document()    #建立第一個節點,第一個節點就是根節點了    root=xml.cneateElement(‘root‘)    #寫入屬性(xmlns:xsi是命名空間,同樣還可以寫入xsi: schemaLocation 指定 xsd 檔案)    root.setAttribute(‘xmlns:xsi‘,‘http://www.xxx.com‘)    #建立節點後,還需要添加到文檔中才有效    xml.appendchild(root)    #一般根節點是很少寫常值內容,那麼給根節點再建立一個子節點    text_node=xml.createElement(‘element‘)    text_node.setAttribute(‘id‘,‘id1‘)    root.appendChild(text_node)    #給這個節點加入文本,文本也是一種節點    text=xml.cneateTextNode(‘hello world‘)    text_node.appendchild(text)    #一個節點加了文本之後,還可以繼續追加其他東西    tag=xml.createElement(‘tag‘)    tag.setAttribute(‘data‘, ‘tag data‘)    text_node.appendchild(tag)    #寫好之後,就需要儲存文檔了    f=open(filename,‘w‘)    f.write(xml.toprettyxml(encodings‘utf-8‘))    f.close()if __name__ == ‘__main__‘:    #在目前的目錄下,建立1. xml    create_xml_test(‘1.xml‘)

就會在本地產生一份xml的文檔

讀取XML文檔

#coding:utf-8from xml.dom import minidom#讀取xml文檔的方法def read_xml_test(filename):   #開啟這個文檔,用parse方法解析   xml = minidom.parse(filename)   #擷取根節點   root = xml.documentElement   #得到根節點下面所有的element節點   #更多方法可以參考以w3school的內容或者用dir(root)擷取   elements = root.getElementsByTagName(‘element‘)   #遍曆處理,elements是一個列表   for element in elements:      #判斷是否有id屬性      if element.hasAttribute(‘id‘):         #不加上面的判斷也可以,若找不到屬性,則返回空         print ‘id:, element.getAttribute(‘id‘)   #遍曆element的子節點   for node in element.childNodes:      #通過nodeMame判斷是否是文本      if node.nodeName =  = ‘#text‘:         #用data屬性擷取常值內容         text = node.data.replace(‘\n, ‘‘)         #這裡的文本需要特殊處理一下,會有多餘的\n         print u‘\t文本:‘, text      else:         #輸出節點名         print ‘\t‘ + node.nodeName         #輸出屬性值,這裡可以用getAttribute方法擷取         #也可以遍曆得到,這是一個字典         for attr,attr_val in node.attributes.items():            print ‘\t\t‘, attr,‘:‘jattr_val    print ‘‘if __name__ == ‘__main__‘:    read_xml_test(‘test.xml‘)    raw_input(‘ok‘)

 

python+selenium自動化軟體測試(第12章):Python讀寫XML文檔

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.