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"
|