使用python的sax方式,如何解析xml下面的多级节点
使用python方式,如何解析xml下面的多级节点。现在有一个xml文件"test",如下:
11
11
0
1
NCID_1_22456141_130.14.22.215_9001_1482583903_1954957455_0MetA0_S_MegaStore_F_1
25256062
24081686
23962761
23524110
20092289
19845767
17158054
17077549
15643558
9741881
11038888
我使用sax方式,实在是不知道怎么修改了。我的sax方式的代码如下
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
#由itemList文件得到item的列表
import xml.sax
class MovieHandler( xml.sax.ContentHandler ):
def __init__(self):
self.CurrentData = ""
self.Count = ""
self.RetMax = ""
self.RetStart = ""
self.IdList = {}
# 元素开始事件处理
def startElement(self, tag, attributes):
self.CurrentData = tag
if tag == "eSearchResult":
print ("*****eSearchResult*****")
#title = attributes["title"]
#print ("Title:"+title)
elif tag == "IdList":
print ("*****IdList*****")
self.IdList = {}
# 元素结束事件处理
def endElement(self, tag):
if self.CurrentData == "Count":
print ("Count:"+self.Count)
elif self.CurrentData == "RetMax":
print ("RetMax:"+self.RetMax)
elif self.CurrentData == "RetStart":
print ("RetStart:"+ self.RetStart)
elif self.CurrentData == "IdList":
#print ("IdList:"+self.Id)
print("-----IdList------")
self.CurrentData = ""
# 内容事件处理
def characters(self, content):
if self.CurrentData == "Count":
self.Count = content
elif self.CurrentData == "RetMax":
self.RetMax = content
elif self.CurrentData == "RetStart":
self.RetStart = content
elif self.CurrentData == "Id":
#self.IdList.append(content)
self.IdList={}
if ( __name__ == "__main__"):
# 创建一个 XMLReader
parser = xml.sax.make_parser()
# turn off namepsaces
parser.setFeature(xml.sax.handler.feature_namespaces, 0)
# 重写 ContextHandler
Handler = MovieHandler()
parser.setContentHandler( Handler )
parser.parse("test")
实在没有办法解决了。但是使用elementtree形式,很容易,代码如下
#!/usr/bin/python3
from xml.etree.ElementTree import parse
doc=parse("test");
for item in doc.iterfind('IdList/Id'):
id=item.text;
print(id)
希望大虾可以帮忙解决sax方式解析此xml文件
相关阅读:
js对象是按键自动排序的吗?下面这个对象怎么让-1再最前面啊?
使用bootstrap怎么实现pc端左对齐,移动端居中的效果?
JavaScript编译的问题
jQ源码中parent.nodeType !== 11的疑问
js如何new 5000个对象,传不同的参数并且不耗费大量内存
使用weexpack打包weex应用imagepineline包下载不下来怎么办。
使用swoole编写的Websocket服务端运行之后出现大量php进程?
如何在子组件中 动态修改 父组件 中的属性值
请问如何使用react native 开发一个展示广告的简单安卓app
2048界面不能屏幕自适应
fis3 打包问题
angluarjs嵌套ajax调用 Promise写法
Android中抽象方法赋值时出现null.
python 字符串操作,空格对齐
vue.js 2.0 父组件props过来的data 在子组件模板直接使用报错
类似这样跨行跨列,展示考勤数据的table在前端如何实现,有什么好的js插件可用?
tp5.0,怎么调用同控制器的方法?
迅雷9支持带有webseed的种子吗
移动端浏览器网页怎么打开原生的app?加了延迟函数还是会继续打开下载链接。
100G超大文件合并排序