python通過ElementTree操作XML
1.引入庫
需要用到3個類,ElementTree,Element以及建立子類的包裝類SubElement
from xml.etree.ElementTree import ElementTree from xml.etree.ElementTree import Element from xml.etree.ElementTree import SubElement as SE
2.讀入並解析
tree = ElementTree(file=xmlfile) root = tree.getroot()
讀入後,tree是ElementTree的類型,獲取xml根結點使用getroot()方法;
XML示例文件:
<item sid='1712' name='大CC' > <a id=1></a> <a id=2></a> </item>
3.獲取子結點
查找Element的所有子結點:
AArry = item.findall('a')
也可使用getchildren():
childs = item.getchildren() for subItem in childs: print subItem.get('id')
4.插入子結點
方法一:
item = Element("item", {'sid' : '1713', 'name' : 'ityouhui'}) root.append(item)
方法二:
SE(root,'item',{'sid':'1713','name':'ityouhui'})
方法一的好處是插入之後可以對item繼續操作。方法二是寫法上簡單,其中SE就是SubElement,在引入處做瞭聲明;
5.操作屬性
獲取Element的某個屬性值(eg:獲取item的 name)
print root.find('item/name').text print item.get('name')
獲取Element所有屬性
print item.items() # [('sid', '1712'), ('name', '大CC')] print item.attrib # {'sid': '1712', 'name': '大CC'}
6.美化XML
在寫入之前,傳入root調用此函數,寫入的XML文件格式整齊美觀:
indent(root) book.write(xmlfile,'utf-8')
## Get pretty look def indent( elem, level=0): i = "\n" + level*" " if len(elem): if not elem.text or not elem.text.strip(): elem.text = i + " " for e in elem: indent(e, level+1) if not e.tail or not e.tail.strip(): e.tail = i if level and (not elem.tail or not elem.tail.strip()): elem.tail = i return elem
到此這篇關於python通過ElementTree操作XML的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。
推薦閱讀:
- python 生成xml文件,以及美化的實例代碼
- python標準庫ElementTree處理xml
- Python批量將csv文件轉化成xml文件的實例
- python xml模塊的簡單使用
- python操作XML格式文件的一些常見方法