Python's Archiver

為方便港臺同胞閱覽,Python中國特別推出簡繁體內容轉換功能

xieaotian 发表于 2008-11-13 09:27

[转]Python解析xml文本

Python:

   1. # parsexml.py     
   2. # 本例子参考自python联机文档,做了适当改动和添加     
   3.      
   4. import xml.parsers.expat     
   5.      
   6. # 控制打印缩进     
   7. level = 0     
   8.      
   9. # 获取某节点名称及属性值集合     
  10. def start_element(name, attrs):     
  11.     global level     
  12.     print '  '*level, 'Start element:', name, attrs     
  13.     level = level + 1     
  14.      
  15. # 获取某节点结束名称     
  16. def end_element(name):     
  17.     global level     
  18.     level = level - 1     
  19.     print '  '*level, 'End element:', name     
  20.         
  21. # 获取某节点中间的值     
  22. def char_data(data):     
  23.     if(data == '\n'):     
  24.         return     
  25.     if(data.isspace()):     
  26.         return     
  27.     global level     
  28.     print '  '*level, 'Character data:', data     
  29.      
  30. p = xml.parsers.expat.ParserCreate()     
  31.      
  32. p.StartElementHandler = start_element     
  33. p.EndElementHandler = end_element     
  34. p.CharacterDataHandler = char_data     
  35. p.returns_unicode = False     
  36.      
  37. f = file('sample.xml')     
  38. p.ParseFile(f)     
  39. f.close()     

Sample.xml

   1. <xml version="1.0"?>     
   2. <contacts id="bluecrystal">     
   3. <item name="keen" fff="ddd">     
   4.     <telephone type="phone">222222222telephone>     
   5.     <telephone type="mobile">134567890telephone>     
   6. </item>     
   7. <item name="bcm">     
   8.     <telephone type="phone">11111111telephone>     
   9.     <telephone type="mobile">15909878909telephone>     
  10. </item>     
  11. </contacts>  

Output:

   1. Start element: contacts {'id': 'bluecrystal'}     
   2.   Start element: item {'fff': 'ddd', 'name': 'keen'}     
   3.     Start element: telephone {'type': 'phone'}     
   4.       Character data: 222222222     
   5.     End element: telephone     
   6.     Start element: telephone {'type': 'mobile'}     
   7.       Character data: 134567890     
   8.     End element: telephone     
   9.   End element: item     
  10.   Start element: item {'name': 'bcm'}     
  11.     Start element: telephone {'type': 'phone'}     
  12.       Character data: 11111111     
  13.     End element: telephone     
  14.     Start element: telephone {'type': 'mobile'}     
  15.       Character data: 15909878909     
  16.     End element: telephone     
  17.   End element: item     
  18. End element: contacts

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.