python解析xml文件选用模块_使用Python 解析XML文件

项目中用到SAX模块对xml文件进行解析,先贴出我们的xml文件吧,当然只是一小部分

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23

0010

Keywords_file/58/default.txt

Keyurl_file/58/default.txt

那我写的例子就是基于上述xml文件的解析;

先熟悉一下流程:

1、首先写一个xml解析的类,执行解析的全部流程,我定义为XMLPARSE;

2、make_parser生成解析器,设置解析器使用的解析方法,也就是将步骤一的解析方法置到解析器中;

3、引入文件,执行解析动作parse()

XMLParse构建:

#!/usr/bin/python

#-*- coding:utf-8 -*-

from xml.sax.handler import ContentHandler

class XMLParse(ContentHandler):

def __init__(self):

self.name = dict()

self.name['ORDER_INFO'] = self._ORDERINFO

self.name['DAY'] = self._DAY

self.name['AREA'] = self._AREA

self.name['KEYWORD_FILES'] = self._SEARCHORDER

def startElement(self, name, attrs):

self.content = ''

if not name in self.name:

return

self.attrs = attrs

if not self.name[name]():

return False

def characters(self, content):

self.content = self.content + content

def endElement(self, name):

try:

if self.label == 'DAY':

#存储操作

self.day = self.content

return

if self.label == 'AREA':

#存储操作

self.area = self.content

return

if self.label == 'KEYWORD_FILES':

#存储操作

self.word_file = self.content

return

except Exception, e:

return False

return

def _ORDERINFO(self):

try:

orderid = str(self.attrs['execute_id'])

self.tmp_eorder_id = orderid

superid = str(self.attrs['order_id'])

type = str(self.attrs['show_type'])

linear = str(self.attrs['show_sequence'])

return True

except Exception, e:

return False

def _DAY(self):

try:

self.label = "DAY"

self.week_id = str(self.attrs['id'])

return True

except Exception,e:

return False

def _AREA(self):

try:

self.label = "AREA"

return True

except Exception,e:

return False

def _SEARCHORDER(self):

try:

self.label = "KEYWORD_FILES"

return True

except Exception, e:

return False

为了防止characters被多次执行,所以对标签内容的解析放在了endElement中进行!具体参看http://www.voidcn.com/article/p-nzaslnxc-ur.html

构造解析器:

from xml.sax import make_parser

par = make_parser()

par.setContentHandler(XMLParse())

执行解析动作:

xml_file = "/root/demo.xml"

par.parse(xml_file)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值