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 相关文章推荐
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
python实现SMTP邮件发送功能
Jun 16 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
Python装饰器的执行过程实例分析
Jun 04 Python
在Pandas中处理NaN值的方法
Jun 25 Python
Python如何调用JS文件中的函数
Aug 16 Python
python 函数中的参数类型
Feb 11 Python
python中for in的用法详解
Apr 17 Python
TensorFlow使用Graph的基本操作的实现
Apr 22 Python
Pytorch实现将模型的所有参数的梯度清0
Jun 24 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
关于Python使用turtle库画任意图的问题
Apr 01 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实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
2011/10/09 PHP
PHP采集腾讯微博的实现代码
2012/01/19 PHP
destoon公司主页模板风格的添加方法
2014/06/20 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
看了就知道什么是JSON
2007/12/09 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
js读取本地文件的实例
2017/12/22 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
浅谈Python中的数据类型
2015/05/05 Python
用Python编写简单的微博爬虫
2016/03/04 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
工商企业管理实习自我鉴定
2013/12/04 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python