python利用ElementTree讀寫xml

2021-08-21 09:45:14 字數 3939 閱讀 3645

1. 寫xml

from xml.etree.elementtree import element, subelement, elementtree

# 生成根節點

root =element('root')

# 生成第乙個子節點 head

head =subelement(root, 'head')

# head 節點的子節點

title =subelement(head, 'title')

title.text = 'well dola!'

# 生成 root 的第二個子節點 body

body =subelement(root, 'body')

# body 的內容

body.text = 'i love dola!'

tree =elementtree(root)

這樣就得到了乙個 xml 樹的物件 tree 以及它的根節點的物件 root

接著我們把它們變成 xml 串,有兩個辦法,乙個是用 tree 物件的 write 方法將 xml 內容寫成乙個檔案,還有乙個是用 etree 的 tostring 方法轉成 xml 字串:

1

2

3

4

5

# 第一種

tree.write('result.xml', encoding='utf-8')

# 第二種

xml_string=etree.tostring(root)

# xml_string 就是 xml 字串了

但是第二種有乙個問題,就是它沒有

1

<?xmlversion="1.0"?>

這個頭部定義內容:

1

'<root><head><title>well dola!<body>i love dola!'

怎麼辦呢?

有乙個辦法是使用 minidom 來實現,方法如下:

1

2

3

4

5

fromxml.domimportminidom

# 使用 minidom 解析

tree=minidom.parsestring(xml_string)

# 重新生成 xml 字串

xml_string=tree.toxml()

雖然讓計算機多執行了一些**,但是這樣可以把問題解決掉。

最後生成的 xml **如下:

1

u'<?xmlversion="1.0"?><root><head><title>well dola!<body>i love dola!'

2. 讀xml

elementtree在python標準庫中有兩種實現:一種是純python實現的,如xml.etree.elementtree,另一種是速度快一點的xml.etree.celementtree。注意:盡量使用c語言實現的那種,因為它速度更快,而且消耗的記憶體更少。

1)呼叫parse()方法,返回解析樹

try

:

import

xml.etree.celementtree as et

except

importerror:

import

xml.etree.elementtree as et

tree = et.parse("

country.xml

") #

root = tree.getroot() #

獲取根節點

2)呼叫from_string(),返回解析樹的根元素

import

xml.etree.elementtree as et

data = open("

country.xml

").read()

root = et.fromstring(data) #

3)呼叫elementtree類elementtree(self, element=none, file=none)  # 這裡的element作為根節點

import

xml.etree.elementtree as et

tree = et.elementtree(file="

country.xml

") #

root = tree.getroot() #

解析過程:

匯入elementtree,import xml.etree.elementtree as et解析xml檔案找到根節點:直接解析xml檔案並獲得根節點,tree = et.parse('country_data.xml') root = tree.getroot()解析字串,root = et.fromstring(country_data_as_string)遍歷根節點可以獲得子節點,然後就可以根據需求拿到需要的字段了。

try: 

import xml.etree.celementtree as et

except

importerror:

import xml.etree.elementtree as et

import sys,os

獲取檔案的根結點

tree = et.parse(filename.xml) 

root = tree.getroot()

獲取所有為object的元素

root.findall('object')
獲取object中為item的元素

ojbect.find('item')
讀取item元素裡面的內容

print item.text
獲取屬性值

print item.get['src'] 或 item['src']

主要方法:

參考:

Element 呼叫介面

博主之前已經為大家講了element入門教程,如果還有什麼疑問的話可以檢視博主置頂的文章。相信大家對element 框架已經有了乙個基本的了解,這次為大家講一下如何呼叫介面。以我自己為例子,我想要呼叫我介面裡的,並讓他在瀏覽器裡顯示出來。import vue from vue import elem...

element清空表單

在element中有對於表單進行重置的方法,為了達到重置的效果,可以對單個框進行重置,進入element ui檢視原始碼,在webstorm中ctrl 左鍵,發現有resetfield 方法 清空單個輸入框,最主要的是找到這個field let fields this.refs 表單名稱 field...

element 安裝使用

1.安裝 cd到當前專案 執行 npm i element ui s2.引入 在 main.js 中寫入以下內容 全域性引入 import elementui from element ui import element ui lib theme chalk index.css vue.use el...