Python中使用cElementTree解析XML

本文介绍了如何使用Python的ElementTree库进行XML文件的加载、节点操作,包括getiterator(), findall(), find()方法,并比较了纯Python和cElementTree的性能。重点讲解了节点的修改,如属性设置和文本值更新。
摘要由CSDN通过智能技术生成

ElementTree在 Python 标准库中有两种实现。一种是纯 Python 实现例如 xml.etree.ElementTree ,另外一种是速度快一点的 xml.etree.cElementTree 。

## 导入

import xml.etree.cElementTree as ET

## 加载XML

      1.加载文件

root = ET.parse('book.xml') 

## 获取根节点

book_node = root.getroot()

## 获取节点

      1.获得指定节点->getiterator()方法

book_node = root.getiterator('list')

       2.获得指定节点->findall()方法

book_node = root.findall('list')  
多重目录指定节点:
book_node = root.findall('./XX/XX/list')  

       3.获得指定节点->find()方法

book_node = root.find('list')  
多重目录指定节点:
book_node = root.find('./XX/XX/list')  

       4.获得儿子节点->getchildren()

for node in book_node:  
     book_node_child = node.getchildren()[0]  
     print book_node_child.tag, '=> ', book_node_child.text

       5.获得全部子节点

!!必须先使用find或者findall或者getroot等获取节点后,方可获取下面子节点
for child in book_node:
     print('child-tag是:',child.tag,',child.attrib:',child.attrib,',child.text:',child.text)
     for sub in child:
          print('sub-tag是:',sub.tag,',sub.attrib:',sub.attrib,',sub.text:',sub.text)

## 修改节点

修改sub1的name属性:
- tag,即标签,用于标识该元素表示哪种数据,即APP_KEY

- attrib,即属性,用Dictionary形式保存,即{‘channel’ = ‘CSDN’}

- text,文本字符串,可以用来存储一些数据,即hello123456789
sub1 = root.find("sub1")
sub1.set("name","New Name")
修改sub2的数据值:
sub2 = root.find("sub2")            
sub2.text = "New Value"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值