国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2019-11-25 18:36:39
字體:
來源:轉載
供稿:網友

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灵石县| 鱼台县| 阿拉善盟| 长垣县| 梁山县| 萨迦县| 福泉市| 义乌市| 扶沟县| 新余市| 托克逊县| 罗甸县| 定日县| 泰兴市| 泾源县| 修武县| 济源市| 板桥市| 张家港市| 宁陵县| 江北区| 南木林县| 万全县| 武清区| 象山县| 七台河市| 岢岚县| 新晃| 大名县| 施秉县| 乐山市| 通化县| 江口县| 浙江省| 始兴县| 沙田区| 乐东| 海城市| 灵璧县| 五常市| 西城区|