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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值