python解析xml多层子节点_xml,python_使用python的sax方式,如何解析xml下面的多级节点,xml,python - phpStudy...

使用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超大文件合并排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值