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 相关文章推荐
一则python3的简单爬虫代码
May 26 Python
Python中3种内建数据结构:列表、元组和字典
Nov 30 Python
Python使用chardet判断字符编码
May 09 Python
详解Django中的form库的使用
Jul 18 Python
Python 绘图库 Matplotlib 入门教程
Apr 19 Python
详谈python3中用for循环删除列表中元素的坑
Apr 19 Python
python web框架中实现原生分页
Sep 08 Python
Pandas操作CSV文件的读写实现方法
Nov 13 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
Django+RestFramework API接口及接口文档并返回json数据操作
Jul 12 Python
python3让print输出不换行的方法
Aug 24 Python
python 求两个向量的顺时针夹角操作
Mar 04 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 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
2016/04/13 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
老生常谈Javascript中的原型和this指针
2016/10/09 Javascript
Vue.js学习示例分享
2017/02/05 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
进一步探究Python的装饰器的运用
2015/05/05 Python
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
详谈python read readline readlines的区别
2017/09/22 Python
python实现ID3决策树算法
2017/12/20 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
python实现猜拳小游戏
2020/04/05 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
应届生污水处理求职信
2013/11/06 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
消防安全宣传口号
2014/06/10 职场文书
安全生产年活动总结
2014/08/29 职场文书
文体活动总结
2015/02/04 职场文书
毕业生个人总结
2015/02/28 职场文书
叶问观后感
2015/06/15 职场文书
组织委员竞选稿
2015/11/21 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js
2022年四月新番
2022/03/15 日漫