国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python通過ElementTree操作XML獲取結點讀取屬性美化XML

2020-02-23 04:58:41
字體:
來源:轉載
供稿:網友

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巩义市| 蒲江县| 剑河县| 崇仁县| 宕昌县| 喀喇| 积石山| 马鞍山市| 大洼县| 于都县| 宜川县| 兴海县| 尼玛县| 安多县| 沿河| 林西县| 香河县| 延吉市| 禹州市| 临汾市| 南华县| 广宗县| 徐汇区| 金门县| 彭山县| 潼关县| 汪清县| 进贤县| 安多县| 霍林郭勒市| 邳州市| 铁岭县| 临城县| 临潭县| 恩平市| 西和县| 常州市| 常州市| 新泰市| 贵州省| 米脂县|