python类库31[使用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

 

完!

posted @ 2011-02-23 15:40  iTech  阅读(11530)  评论(0编辑  收藏  举报