国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉林市| 千阳县| 峨眉山市| 乐亭县| 威宁| 桑植县| 安泽县| 鹿泉市| 曲阳县| 江都市| 西乌珠穆沁旗| 云阳县| 五大连池市| 奉新县| 敖汉旗| 曲麻莱县| 宜章县| 定陶县| 石泉县| 资兴市| 霸州市| 屏山县| 红桥区| 酒泉市| 雷州市| 和平县| 庆云县| 清原| 内丘县| 百色市| 饶平县| 湾仔区| 饶河县| 丽江市| 城市| 贺州市| 龙川县| 临安市| 金溪县| 红河县| 罗山县|