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

來源:互聯網
上載者:User

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.