# -*- coding: utf-8 -*-
#XML处理
#SAX处理XML的方式和Java中的SAX解析器一样,从ContentHandler方法中继承,并处理startDocument、endDocument等信息
from xml.sax import *
#必须从xml.sax包中导入所有方法和变量
class MarkDecodeHandler(ContentHandler):
#与Java的SAXParser基本一致,处理方法一样
marks=None
temp=""
flag=False
mystr=""
currenttag=None
mark=None
#注意Python的特殊格式,必须有self作为第一个参数
def startDocument(self):
print "start xml document"
def endDocument(self):
print "end xml document"
#name=当前处理的标签名,attrs以dict的格式存放标签的所有属性
def startElement(self,name,attrs):
if name=="marks":
self.marks=[]
elif name=="student":
self.mark={"name":attrs['name']}
self.mark.update({"sno":attrs['sno']})
elif name=="mark":
self.mystr=attrs['course']
self.flag=True
self.mark.update({self.mystr:self.temp.strip()})
self.currenttag=name
def endElement(self,name):
if name=="student":
self.marks.append(self.mark)
elif name=="mark":
if self.flag==True:
self.mark.update({self.mystr:self.temp.strip()})
self.flag=False
self.temp=""
self.currenttag=None
#content表示正在处理中的数据
def characters(self,content):
self.temp+=content
if __name__ == '__main__':
#调用make_parser方法创建一个SAX解析器
# '''
print u"===============Python SAX方式解析XML文档==================="
parser=make_parser()
handler=MarkDecodeHandler()
parser.setContentHandler(handler)
data=""
with open("Student.xml") as file:
data=file.read().strip()
import StringIO
#StringIO模块用于将字符串转换成流数据,类似于Java的ByteArrayOutputStream和ByteArrayInputStream
parser.parse(StringIO.StringIO(data))
for item in handler.marks:#marks是列表
for i in item.items():
key,value=i
if key != 'name' and key != 'sno' and item['sno'][:4] == '2008' and int(value) < int(60):
print item['sno'],'=',item['name'],'=',key,'=>',value
#'''
![avatar](https://profile-avatar.csdnimg.cn/e8a91ba1422441e3be3e6974e119e4bc_whiterbear.jpg!1)
白熊花田
- 粉丝: 164
- 资源: 12
最新资源
- 被忽视的成本:中国城市扩张导致的生态系统服务损失从三耦合的角度来看
- 永磁同步电机PMSM参数辨识的粒子群优化算法实现流程解析与案例探索,基于粒子群优化算法的PMSM参数精准辨识与迭代更新策略,基于粒子群优化算法的永磁同步电机PMSM参数辨识 关键词:永磁同步电机 粒子
- 揭示城市扩张对植被碳的影响封存能力-以长江经济带为例(软件翻译)
- 双馈风电机组与同步发电机组四机两区域Simulink仿真建模及风光储联合调频与多种控制策略结合混合储能技术研究,双馈风电机组与同步发电机组四机两区域Simulink仿真建模及风光储联合调频控制策略,混
- 电气安装工 初级工.pdf
- 清华大学:普通人如何抓住DeepSeek红利
- Swift 编程语言的入门教程,适合零基础或有一定编程经验的读者快速上手
- 清华出品(104页)DeepSeek从入门到精通
- DeepSeek指导手册(24页)
- 研究机翼在不同速度下产生的噪音和性能表现
- JimuFlow RPA工具MacOS版v1.0.0
- MATLAB滚动轴承故障机理建模与仿真分析:基于ODE45的数值计算与多类型故障诊断预测研究,MATLAB轴承动力学模拟:滚动轴承故障机理建模与数值计算,多故障类型模拟及数据分析报告(含故障类型识别与
- 基于改进Relief算法的特征选取与关联向量机在短期负荷预测中的Matlab应用复现,基于改进Relief算法的特征选取与关联向量机在短期负荷预测中的实践(Matlab复现),相关向量机和特征选取技术
- COMSOL模拟技术揭秘:金属合金凝固过程及连铸工艺精确分析-相场流场与温度场的综合运用探究坯壳厚度计算,金属合金凝固与连铸过程数值模拟:相场流场温度场分析下的坯壳厚度计算,comsol数值模拟
- JimuFlow RPA工具Ubuntu版v1.0.0
- 煤层瓦斯渗透扩散与煤体孔隙裂隙二重介质特性研究-基于修正的P-M渗透率模型与气固耦合效应的模拟分析,煤层瓦斯渗透扩散的深部采煤模型研究:建立孔隙裂隙二重介质特性P-M渗透率模型与气固耦合模型的解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)