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