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

來源:互聯網
上載者:User

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

 本文講解如何通過ElementTree解析XML,擷取兒子結點、插入兒子結點、操作屬性、美化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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.