Как проанализировать файл, который имеет более одного элемента верхнего уровня, используя PythonPython

Программы на Python
Ответить
Anonymous
 Как проанализировать файл, который имеет более одного элемента верхнего уровня, используя Python

Сообщение Anonymous »

Я написал скрипт Python для анализа файла.

Скрипт Python:

Код: Выделить всё

from xml.dom.minidom import parse

import xml.dom.minidom

DOMTree = xml.dom.minidom.parse("details.xml")

CallDetailRecord = DOMTree.documentElement

def getText(data):

detail = str(data)
#match = re.search(r'(.*\s)(false).*|(.*\s)(true).*',detail,re.IGNORECASE)
match_false = re.search(r'(.*\s)(false).*',detail,re.IGNORECASE)
if (match_false):
return match_false.group(2)
match_true = re.search(r'(.*\s)(true).*',detail,re.IGNORECASE)
if (match_true):
return match_true.group(2)

org_addr = CallDetailRecord.getElementsByTagName("origAddress")

for record in org_addr:

ton_1 = record.getElementsByTagName("ton")[0]
npi_1 = record.getElementsByTagName("npi")[0]
pid_1 = record.getElementsByTagName("pid")[0]
msdn_1 = record.getElementsByTagName("msisdn")[0]
org_ton = ton_1.childNodes[0].data
org_npi = npi_1.childNodes[0].data
org_pid = pid_1.childNodes[0].data
org_msdn = msdn_1.childNodes[0].data

recp_addr = CallDetailRecord.getElementsByTagName("recipAddress")

for record in recp_addr:
ton_1 = record.getElementsByTagName("ton")[0]
npi_1 = record.getElementsByTagName("npi")[0]
pid_1 = record.getElementsByTagName("pid")[0]
msdn_1 = record.getElementsByTagName("msisdn")[0]
rec_ton = ton_1.childNodes[0].data
rec_npi = npi_1.childNodes[0].data
rec_pid = pid_1.childNodes[0].data
rec_msdn = msdn_1.childNodes[0].data

dgti_addr = CallDetailRecord.getElementsByTagName("dgtiAddress")

for record in dgti_addr:

ton_1 = record.getElementsByTagName("ton")[0]
npi_1 = record.getElementsByTagName("npi")[0]
pid_1 = record.getElementsByTagName("pid")[0]
msdn_1 = record.getElementsByTagName("msisdn")[0]
dgti_ton = ton_1.childNodes[0].data
dgti_npi = npi_1.childNodes[0].data
dgti_pid = pid_1.childNodes[0].data
dgti_msdn = msdn_1.childNodes[0].data

calling_line_id = CallDetailRecord.getElementsByTagName("callingLineId")

for record in calling_line_id:

ton_1 = record.getElementsByTagName("ton")[0]
npi_1 = record.getElementsByTagName("npi")[0]
pid_1 = record.getElementsByTagName("pid")[0]
msdn_1 = record.getElementsByTagName("msisdn")[0]
clid_ton = ton_1.childNodes[0].data
clid_npi = npi_1.childNodes[0].data
clid_pid = pid_1.childNodes[0].data
clid_msdn = msdn_1.childNodes[0].data

untransl_OrigAddress = CallDetailRecord.getElementsByTagName("untranslOrigAddress")

sub_time = CallDetailRecord.getElementsByTagName("submitTime")[0]

if(sub_time):

sub_time_value = sub_time.childNodes[0].data
print " \n SUBMIT TIME: %s \n" %sub_time_value

sub_date = CallDetailRecord.getElementsByTagName("submitDate")[0]

if(sub_date):

sub_date_value = sub_date.childNodes[0].data
print " \n SUBMIT DATE: %s\n" %sub_time_value

termin_time = CallDetailRecord.getElementsByTagName("terminTime")[0]

if(termin_time):

termin_time_value = termin_time.childNodes[0].data
print " \n TERMIN TIME: %s \n" %termin_time_value

termin_date = CallDetailRecord.getElementsByTagName("terminDate")[0]

if(termin_date):

termin_date_value = termin_date.childNodes[0].data
print " \n TERMIN DATE: %s\n" %termin_time_value

status = CallDetailRecord.getElementsByTagName("status")[0]

if(status):

status_value = status.childNodes[0].data
print " \n STATUS: %s\n" %status_value

msglength = CallDetailRecord.getElementsByTagName("lengthOfMessage")[0]

if(msglength):
msglength_value = msglength.childNodes[0].data
print " \n MESSAGE LENGTH: %s\n" %msglength_value

prioIndicator = CallDetailRecord.getElementsByTagName("prioIndicator")[0]

if (prioIndicator):

#print prioIndicator.childNodes[0].data
prioIndicator_value = getText(prioIndicator.childNodes[0])
print " \n PRIO INDICATOR:  %s\n" %prioIndicator_value
Чтобы уменьшить размер, я не публикую весь сценарий.

ВХОДНОЙ ФАЙЛ:

Код: Выделить всё


international
telephone
plmn
32410000


international
telephone
plmn
918337807718

14-08-20
19:36:29
deleted
14-08-23
19:51:52
38



26204487

international
telephone
plmn
32410000

0
13
151

international
telephone
plmn
32410000

0
bulk
4098
gsm

10000000000000000000000000000000


Скрипт отлично работает для этого файла. Но предположим, что у меня есть более одного

CallDetailRecord>, а затем как проанализировать этот файл.

ПРИМЕР:

Код: Выделить всё

.
.
.


.
.
.


.
.
.

Надеюсь, ждем хороших результатов :)!!!

Подробнее здесь: https://stackoverflow.com/questions/256 ... ing-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»