基本上,Python一開始就會先看系統中你安裝的版本,根據python官網提及可以知道在2.5版本之後是使用xml.etree.ElementTree,而在2.5版本之前會使用elementtree.ElementTree。
所以這部分可能大家要特別注意囉!!
首先~我這邊會先教大家要如何去讀取xml的內容跟資料,雖然官網上已經寫的非常清楚了!
我這邊會根據我自己做的實驗進行說明,格式當然會跟官網不同囉。
In Xml config file:
<root> <data> <subversionpath>subpath1</subversionpath> <folderpath>fpath1</folderpath> </data> </root>
上述是我xml內容的資料。
那要如何讀取呢?
讀取的方式非常的簡單!
Step 1: 建立tree
versiontree = ET.parse('your_xml_file_name.xml')
versionroot = versiontree.getroot()
Step 2: 透過tree讀取所需資料
透過此for的寫法,我們可以知道child可以讀取到versionroot中的所有第一層小孩,也就是data這個位置。
Input:
for child in versionroot:print "child: ", child
Output:
child: <Element 'data' at 0x7fd19bdaf490>
Step 3: 讀取data這個值
從Step 2可以得知,寫這個Input,可以讀到此child的addr.位置。
所以如果想知道第一層小孩的所有名稱,可以寫成:
Input:
for child in versionroot:print "child.tag: ", child.tag
Output:
child.tag: data
Step 4: 讀取特定child值
Input:
for label in versionroot.findall('./data'): print label.find('subversionpath').text print label.find('folderpath').textOutput:
subpath1 fpath1
那要如何修改值呢?
Step 1: 修改特定值
這邊要注意的是,我們要修改回此xml file下面寫這樣是不夠的! 因為這樣的修改只是修改儲存在記憶體中的值
所以必須要重新寫回xml中,有兩種方式,其中一種是較為簡單的如現在我介紹的這種
另外一種下次再做介紹吧!! Input:
versionroot.find('./data/subversionpath').txt = subpath2 print versionroot.find('./data/subversionpath').txt versionroot.find('./data/folderpath').txt = fpath2 print versionroot.find('./data/folderpath').txtOutput:
subpath2 fpath2Step 2: 寫回xml中
只要做這件事情,就可以把剛剛讀成tree的資料,再重新寫回xml中囉! Input:
versiontree.write('your_xml_file_name.xml')這樣是不是很簡單呢~~ 動手寫寫看吧~~
沒有留言:
張貼留言