用ElementTree 解析和生成 XML

2021-04-13 11:26:04 字數 2513 閱讀 3862

from elementtree import elementtree

from elementtree.elementtree import element

##解析方案一: 解析xml字串,入參是字串

fp = open('test.xml', 'r')

content = fp.read()

fp.close()

content = content.decode('gb2312').encode('utf-8')

content = content.replace('encoding="gb2312"', 'encoding="utf-8"')

print content

root = elementtree.fromstring(content)

##解析方案二: 解析乙個xml檔案,入參是檔名

import elementtree.elementtree as et

root = et.element("html")

##獲取節點

##獲取同名節點列表

root.findall('nodename') ##這是第一層節點

root.findall('/nodename/subnode') ##也可以寫路徑來獲取底下幾層的節點

##也可以這麼獲取多層的節點

elementtree.element = root.findall('nodename')

elementtree.element[0].findall('subnode')

##獲取後的節點可以用個iter來儲存,也可以直接就用 elementtree.element來獲取

##獲取單個節點,如果有同名的返回第乙個節點

root.find('nodename') ##這是第一層節點

root.find('/nodename/subnode') ##也可以寫路徑來獲取底下幾層的節點

##也可以這麼獲取多層的節點

elementtree.element = root.find('nodename')

elementtree.element.find('subnode')

##獲得和修改屬性

##根節點

print root.get("name")

root.set("name", "aaaa")##修改根節點中名為name的屬性值為"aaaa"

print root.get("name")

##子節點

elementtree.element = root.findall('node')

print elementtree.element[2].get("name")

elementtree.element[2].set("name","kkk")

print elementtree.element[2].get("name")

##寫xml

##將root儲存為xml字串,這是寫xml的方法之一,前提是得先由乙個xml解析出root

print elementtree.tostring(root, encoding='gb2312')

##寫xml方法之二,構造xml,從空白開始

from elementtree.******xmlwriter import xmlwriter

import sys

##xmlwriter(file,encoding='')引數是:檔名,檔案編碼型別

w = xmlwriter("test.xml",, encoding='gb2312')

w.declaration(encoding='gb2312') ##新增xml頭,即<?xml version="1.0" encoding="gb2312"?>

xmlstr = w.start("html") ##這邊的變數不能定義為 xml

w.start("head") ##根節點

w.element("title", "my document")

w.start("body")

w.element("h1", "this is a heading")

w.element("p", "this is a paragraph")

w.start("p")

w.data("this is ")

w.element("b", "bold")

w.data(" and ")

w.element("i", "italic")

w.data(".")

w.end("p")

w.close(xmlstr)

##以上是將生成的xml寫到檔案中,如果是想寫到乙個字串中則需要使用以下**

from cstringio import stringio

out = stringio()

w = xmlwriter(out, encoding='gb2312')

##……中間相同

w.close(xmlstr)

ss = out.getvalue() ##用這句來獲得整個xml字串

Python property原理解析和用法例項

在我們定義資料庫欄位類的時候,往往需要對其中的類屬性做一些限制,一般用get和set方法來寫,那在python中,我們該怎麼做能夠少寫 又能優雅的實現想要的限制,減少錯誤的發生呢,這時候就需要我們的 property閃亮登場啦,巴拉巴拉能量 用 來舉例子更容易理解,比如乙個學生成績表定義成這樣 cl...

用VB解析網域名稱

private sub command1 click msgbox getip www.sina.com end sub function getip url as string as string shell command.com c ping url n 1 c ping vbhide dim...

用 python 解析歌詞

2.解析歌詞 musiclrc 00 03.50 傳奇 00 19.10 作詞 劉兵 作曲 李健 00 20.60 演唱 王菲 00 26.60 04 40.75 02 39.90 00 36.25 只是因為在人群中多看了你一眼 04 49.00 02 47.44 00 43.69 再也沒能忘掉你容...