[python]通過ElementTree來操作XML

來源:互聯網
上載者:User

本文講解如何通過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 lookdef 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.