print("文件计数:%d/%d." % (gz_cnt,paser_num))
str_s,cnt = dom_parser(gz)
#str_s,cnt = sax_parser(gz)
#str_s,cnt = ET_parser(gz)
#str_s,cnt = ET_parser_iter(gz)
output.write(str_s)
vs_cnt += cnt
def dom_parser(gz):
import gzip,cStringIO
import xml.dom.minidom
vs_cnt = 0
str_s = ''
file_io = cStringIO.StringIO()
xm = gzip.open(gz,'rb')
print("已读入:%s.\n解析中:" % (os.path.abspath(gz)))
doc = xml.dom.minidom.parseString(xm.read())
bulkPmMrDataFile = doc.documentElement
#读入子元素
enbs = bulkPmMrDataFile.getElementsByTagName("eNB")
measurements = enbs[0].getElementsByTagName("measurement")
objects = measurements[0].getElementsByTagName("object")
#写入csv文件
for object in objects:
vs = object.getElementsByTagName("v")
vs_cnt += len(vs)
for v in vs:
file_io.write(enbs[0].getAttribute("id")+' '+object.getAttribute("id")+' '+\
object.getAttribute("MmeUeS1apId")+' '+object.getAttribute("MmeGroupId")+' '+object.getAttribute("MmeCode")+' '+\
object.getAttribute("TimeStamp")+' '+v.childNodes[0].data+'\n') #获取文本值
str_s = (((file_io.getvalue().replace(' \n','\r\n')).replace(' ',',')).replace('T',' ')).replace('NIL','')
xm.close()
file_io.close()
return (str_s,vs_cnt)
def sax_parser(gz):
import os,gzip,cStringIO
from xml.parsers.expat import ParserCreate
#变量声明
d_eNB = {}
d_obj = {}
s = ''
global flag
flag = False
file_io = cStringIO.StringIO()
#Sax解析类
class DefaultSaxHandler(object):
#处理开始标签
def start_element(self, name, attrs):
global d_eNB
global d_obj
global vs_cnt
if name == 'eNB':
d_eNB = attrs
elif name == 'object':
d_obj = attrs
elif name == 'v':
file_io.write(d_eNB['id']+' '+ d_obj['id']+' '+d_obj['MmeUeS1apId']+' '+d_obj['MmeGroupId']+' '+d_obj['MmeCode']+' '+d_obj['TimeStamp']+' ')
vs_cnt += 1
else:
pass
#处理中间文本
def char_data(self, text):
global d_eNB
global d_obj
global flag
if text[0:1].isnumeric():
file_io.write(text)
elif text[0:17] == 'MR.LteScPlrULQci1':
flag = True
#print(text,flag)
else:
pass
#处理结束标签
def end_element(self, name):
global d_eNB
global d_obj
if name == 'v':
file_io.write('\n')
else:
pass
#Sax解析调用
handler = DefaultSaxHandler()
parser = ParserCreate()
parser.StartElementHandler = handler.start_element
parser.EndElementHandler = handler.end_element
parser.CharacterDataHandler = handler.char_data
vs_cnt = 0
str_s = ''
xm = gzip.open(gz,'rb')
print("已读入:%s.\n解析中:" % (os.path.abspath(gz)))
for line in xm.readlines():
parser.Parse(line) #解析xml文件内容
if flag:
break
str_s = file_io.getvalue().replace(' \n','\r\n').replace(' ',',').replace('T',' ').replace('NIL','') #写入解析后内容
xm.close()
file_io.close()
return (str_s,vs_cnt)
def ET_parser(gz):
import os,gzip,cStringIO
import xml.etree.cElementTree as ET
vs_cnt = 0
str_s = ''
file_io = cStringIO.StringIO()
xm = gzip.open(gz,'rb')
print("已读入:%s.\n解析中:" % (os.path.abspath(gz)))
tree = ET.ElementTree(file=xm)
root = tree.getroot()
for elem in root[1][0].findall('object'):
for v in elem.findall('v'):
file_io.write(root[1].attrib['id']+' '+elem.attrib['TimeStamp']+' '+elem.attrib['MmeCode']+' '+\
elem.attrib['id']+' '+ elem.attrib['MmeUeS1apId']+' '+ elem.attrib['MmeGroupId']+' '+ v.text+'\n')
vs_cnt += 1
str_s = file_io.getvalue().replace(' \n','\r\n').replace(' ',',').replace('T',' ').replace('NIL','') #写入解析后内容
xm.close()
file_io.close()
return (str_s,vs_cnt)
def ET_parser_iter(gz):
import os,gzip,cStringIO
import xml.etree.cElementTree as ET
vs_cnt = 0
str_s = ''
file_io = cStringIO.StringIO()
xm = gzip.open(gz,'rb')
print("已读入:%s.\n解析中:" % (os.path.abspath(gz)))
d_eNB = {}
d_obj = {}
i = 0
for event,elem in ET.iterparse(xm,events=('start','end')):
if i >= 2:
break
elif event == 'start':
if elem.tag == 'eNB':
d_eNB = elem.attrib
elif elem.tag == 'object':
d_obj = elem.attrib
elif event == 'end' and elem.tag == 'smr':
i += 1
elif event == 'end' and elem.tag == 'v':
file_io.write(d_eNB['id']+' '+d_obj['TimeStamp']+' '+d_obj['MmeCode']+' '+d_obj['id']+' '+\
d_obj['MmeUeS1apId']+' '+ d_obj['MmeGroupId']+' '+str(elem.text)+'\n')
vs_cnt += 1
elem.clear()
str_s = file_io.getvalue().replace(' \n','\r\n').replace(' ',',').replace('T',' ').replace('NIL','') #写入解析后内容
xm.close()
file_io.close()
return (str_s,vs_cnt)
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有