python解析xml多层子节点_使用python的sax方式,如何解析xml下面的多级节点

使用python方式,如何解析xml下面的多级节点。现在有一个xml文件"test",如下:<?xml version="1.0" encoding="utf-8"?>

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文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值