EDIT: Я нашел способ заставить его работать. Оказывается, у меня был вызов elem.clear()
, который я не показывал в приведенном ниже коде. Я прошу прощения за то. Я изменил его, чтобы вы могли видеть, как это было. Оказывается, если я переведу этот вызов внутри оператора if, проблема исчезнет. Но я до сих пор не понимаю, как ясность вызывалась до того, как утверждение if было закончено.iterparse not getting children text
У меня есть файл XML, что-то вроде этого:
<alarm> <alarm_id> 127688705 </alarm_id> <site> 1 </site> <event_time> 14/08/31 00:01:00 </event_time> <cease_time> 14/08/31 00:07:00 </cease_time> <problem_text>
Something went wrong </problem_text> </alarm>
Я знаю, что это не имеет надлежащего стиль, но это, как мой сценарий получает это, так что я думал дать вам ребята всю картину , Файл в основном содержит сотни элементов <alarm>
под элементом <root>
.
Что я хочу сделать - это проанализировать файл с помощью iterparse и получить всю текстовую информацию от дочерних элементов <alarm>
. Мой сценарий до сих пор выглядит следующим образом:
import xml.etree.cElementTree as etree
try:
sourcefile = open('file.xml')
except IOError:
print('Cannot open ', sourcefile)
return -1
for event, elem in etree.iterparse(sourcefile):
if elem.tag == 'alarm':
print("event:", event)
for child in elem:
print(child.tag, child.text)
elem.clear()
Но я получаю None
в результате из child.text
. Вот результат, который я получаю, когда запускаю скрипт:
Можете ли вы, ребята, дать мне руку с этим?
код прекрасно работает со мной. 'Python 2.7.3'. –