[转载]python xml解析之ElementTree 基本读操作示例


摘自:http://bbs3.chinaunix.net/thread-1669868-1-1.html

python ElementTree 基本读操作示例

演示用XML文件:test.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <root>  
  3.  <person age="18">  
  4.     <name>hzj</name>  
  5.     <sex>man</sex>  
  6.  </person>  
  7.  <person age="19" des="hello">  
  8.     <name>kiki</name>  
  9.     <sex>female</sex>  
  10.  </person>  
  11. </root>  

1.加载xml文件

    加载XML文件共有2种方法,一是加载指定字符串,二是加载指定文件

2.获取element的方法

  a) 通过getiterator

  b) 过 getchildren

  c) find方法

  d) findall方法

示例如下:

  1. #-*- coding:utf-8 -*-  
  2. from xml.etree import ElementTree  
  3. def print_node(node):  
  4.     ''''' 打印结点基本信息'''  
  5.     print "=============================================="  
  6.     print "node.attrib:%s" node.attrib  
  7.     if node.attrib.has_key("age")  
  8.         print "node.attrib['age']:%s" node.attrib['age']  
  9.     print "node.tag:%s" node.tag  
  10.     print "node.text:%s" node.text  
  11. def read_xml(text):  
  12.     ''''' 读xml文件'''  
  13.     加载XML文件(2种方法,一是加载指定字符串,二是加载指定文件)      
  14.     root ElementTree.parse(r"D:\test.xml")  
  15.     root ElementTree.fromstring(text)  
  16.       
  17.     获取element的方法  
  18.     通过getiterator   
  19.     lst_node root.getiterator("person")  
  20.     for node in lst_node:  
  21.         print_node(node)  
  22.           
  23.     2通过 getchildren  
  24.     lst_node_child lst_node[0].getchildren()[0]  
  25.     print_node(lst_node_child)  
  26.           
  27.     .find方法  
  28.     node_find root.find('person')  
  29.     print_node(node_find)  
  30.       
  31.     #4. findall方法  
  32.     node_findall root.findall("person/name")[1]  
  33.     print_node(node_findall)  
  34.       
  35. if __name__ == '__main__':  
  36.     read_xml(open("test.xml").read())  
  37.     write_xml(open("test.xml").read())

posted on 2010-11-24 16:39  dqshll  阅读(642)  评论(0)    收藏  举报

导航