python解析xml文件操作实例


Posted in Python onOctober 05, 2014

本文实例讲述了python解析xml文件操作的实现方法。分享给大家供大家参考。具体方法如下:

xml文件内容如下:

<?xml version="1.0" ?> 
<!--Simple xml document__chapter 8--> 
<book> 
  <title> 
    sample xml thing 
  </title> 
  <author> 
    <name> 
      <first> 
        ma 
      </first> 
      <last> 
        xiaoju 
      </last> 
    </name> 
    <affiliation> 
      Springs Widgets, Inc. 
    </affiliation> 
  </author> 
  <chapter number="1"> 
    <title> 
      First 
    </title> 
    <para> 
      I think widgets are greate.You should buy lots of them forom 
      <company> 
        Spirngy Widgts, Inc 
      </company> 
    </para> 
  </chapter> 
</book>

python代码:

from xml.dom import minidom, Node 
import re, textwrap 
 
class SampleScanner: 
  """""" 
 
  def __init__(self, doc): 
    """Constructor""" 
    assert(isinstance(doc, minidom.Document)) 
    for child in doc.childNodes: 
      if child.nodeType == Node.ELEMENT_NODE and \ 
        child.tagName == "book": 
        self.handle_book(child) 
         
  def handle_book(self, node): 
     
    for child in node.childNodes: 
      if child.nodeType != Node.ELEMENT_NODE: 
        continue 
      if child.tagName == "title": 
        print "Book titile is:", self.gettext(child.childNodes) 
      if child.tagName == "author": 
        self.handle_author(child) 
      if child.tagName == "chapter": 
        self.handle_chapter(child) 
         
  def handle_chapter(self, node): 
    number = node.getAttribute("number") 
    print "number:", number 
    title_node = node.getElementsByTagName("title") 
    print "title:", self.gettext(title_node) 
     
    for child in node.childNodes: 
      if child.nodeType != Node.ELEMENT_NODE: 
        continue 
      if child.tagName == "para": 
        self.handle_chapter_para(child) 
         
  def handle_chapter_para(self, node): 
    company = "" 
    company = self.gettext(node.getElementsByTagName("company")) 
    print "chapter:para:company", company 
     
         
  def handle_author(self, node): 
    for child in node.childNodes: 
      if child.nodeType != Node.ELEMENT_NODE: 
        continue 
      if child.tagName == "name": 
        self.handle_author_name(child) 
      if child.tagName == "affiliation": 
        print "affiliation:", self.gettext(child.childNodes) 
         
  def handle_author_name(self, node): 
    first = "" 
    last = "" 
    for child in node.childNodes: 
      if child.nodeType != Node.ELEMENT_NODE: 
        continue 
      if child.tagName == "first": 
        first = self.gettext(child.childNodes) 
      if child.tagName == 'last': 
        last = self.gettext(child.childNodes) 
         
    print "firstname:%s,lastname:%s" % (first, last) 
     
         
  def gettext(self, nodelist): 
    retlist = [] 
    for node in nodelist: 
      if node.nodeType == Node.TEXT_NODE: 
        retlist.append(node.wholeText) 
      elif node.hasChildNodes: 
        retlist.append(self.gettext(node.childNodes)) 
         
    return re.sub('\s+', " ", ''.join(retlist)) 
   
         
if __name__=="__main__": 
  doc = minidom.parse("simple.xml") 
  sample = SampleScanner(doc)

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python中os和shutil模块实用方法集锦
May 13 Python
Python通过递归遍历出集合中所有元素的方法
Feb 25 Python
在Python的Tornado框架中实现简单的在线代理的教程
May 02 Python
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
Python:Numpy 求平均向量的实例
Jun 29 Python
如何基于python测量代码运行时间
Dec 25 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 Python
django rest framework serializer返回时间自动格式化方法
Mar 31 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
Apr 22 Python
Pyinstaller 打包发布经验总结
Jun 02 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
Python中json.dumps()函数的使用解析
May 17 Python
python写xml文件的操作实例
Oct 05 #Python
python实现上传样本到virustotal并查询扫描信息的方法
Oct 05 #Python
python实现计算资源图标crc值的方法
Oct 05 #Python
python求crc32值的方法
Oct 05 #Python
Python获取文件ssdeep值的方法
Oct 05 #Python
python获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 #Python
python获取文件版本信息、公司名和产品名的方法
Oct 05 #Python
You might like
PHP PDO函数库详解
2010/04/27 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
基于jQuery试卷自动排版系统
2010/07/18 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
Python素数检测实例分析
2015/06/15 Python
Python 实现链表实例代码
2017/04/07 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
python实现傅里叶级数展开的实现
2018/07/21 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
python包的导入方式总结
2021/03/02 Python
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
技术总监的工作职责
2013/11/13 职场文书
冰淇淋店创业计划书范文
2013/12/27 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
政治思想表现评语
2014/05/04 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
诚实守信主题班会
2015/08/13 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python