python类库[使用xml.etree.ElementTree读写xml]



一 基本知识 
1、插入节点 
Element.insert(index, element) 、Element(tag[, attrib][, **extra]) 、SubElement(parent, tag[, attrib[, **extra]]) 、Element.append(subelement) 
2、删除节点 
Element.remove(subelement) 删除一个节点、Element.clear()删除该节点下所有子节点 
3、在节点中插入属性 
Element.set(key, value)

4、查找节点

a) Element.getiterator   b) Element.getchildren   c) Element.find   d) Element.findall

 

二 读取xml

1)xml为

复制代码

<?xml version="1.0" encoding="UTF-8"?>
 <employees> 
  
<employee id = '1'> 
    
<name>linux</name>
    <age>30</age>
  </employee>
  <employee id = '2'> 
    
<name>windows</name>
    <age>20</age>
  </employee>
 </employees>

复制代码

 

 

2)python脚本为

复制代码

from xml.etree import ElementTree

def print_node(node):
    
print "====================================="
    for key,value in node.items():
      
print "%s:%s" % (key, value)   
    
for subnode in node.getchildren():
      
print "%s:%s" % (subnode.tag, subnode.text)   

def read_xml(text = '', xmlfile = ''):
    
#root = ElementTree.parse(xmlfile)
    root = ElementTree.fromstring(text)
    
    
# 1 getiterator([tag=None]) 
    # only elements whose tag equals tag are returned from the iterator
    eitor = root.getiterator("employee")
    
for e in eitor:
        print_node(e)
    
    
# 2 getchildren()
    # Returns all subelements
    eitor = root.getchildren()
    
for e in eitor:
        print_node(e)  
    
    
# 3 findall(match) 
    # Finds all subelements matching match. 
    # match may be a tag name or path. Returns an iterable yielding all matching elements  
    node_findall = root.findall("employee")
    
for e in node_findall:
        print_node(e)

    
# 4 find(match) 
    # Finds the first subelement matching match. 
    # match may be a tag name or path. Returns an element instance or None 
    node_find = root.find('employee')
    print_node(node_find)
    


if __name__ == '__main__':
    read_xml(open(
"employees.xml").read()) 

复制代码

 

 

参考:

http://blog.csdn.net/kiki113/archive/2009/04/06/4052584.aspx

 

完!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值