У меня ранее была аналогичная проблема после обновления с 5.3 до 5.4. Но моя настройка выглядит немного по-другому, так как я запускаю Debian и использую fcgid для сервера PHP-страниц, а не модуль PHP5 apache / cgi. Поэтому после того, как я обновил его, он также установил php5_cgi, который столкнулся с моей установкой fcgid и больше не будет выполнять файлы PHP.
Мне пришлось отключить модуль Apache и перезапустить Apache
a2dismod php5_cgi
/etc/init.d/apache2 restart
После того, как модуль php5_cgi был в стороне, fcgid снова смог обслуживать страницы PHP.
Если я правильно понял ваш вопрос, вам нужно пройтись по дереву XML, так что вы, вероятно, захотите иметь рекурсивную функцию, которая делает это. Примерно так:
import pandas as pd
import xml.etree.ElementTree as ET
tree = ET.parse('file.xml')
root = tree.getroot()
def f(elem, result):
result[elem.tag] = elem.text
cs = elem.getchildren()
for c in cs:
result = f(c, result)
return result
d = f(root, {})
df = pd.DataFrame(d, index=['values']).T
df
Out:
values
Transmission \n
TransmissionBody \n
level1 \n
level2 \n
level3 \n
level4 \n
level5 \n
level6 \n
ColA ABC
ColB 123
Обновление: Вот когда нам нужно сделать это для нескольких файлов XML. Я добавил еще один файл, похожий на исходный файл с ColA, строки ColB заменены на
<ColA>DEF</ColA>
<ColB>456</ColD>
Вот код:
def f(elem, result):
result[elem.tag] = elem.text
cs = elem.getchildren()
for c in cs:
result = f(c, result)
return result
result = {}
for file in glob.glob('*.xml'):
tree = ET.parse(file)
root = tree.getroot()
result = f(root, result)
df = pd.DataFrame(result, index=['values']).T
df
И вывод:
0 1
Transmission \n \n
TransmissionBody \n \n
level1 \n \n
level2 \n \n
level3 \n \n
level4 \n \n
level5 \n \n
level6 \n \n
ColA ABC DEF
ColB 123 456
у вас есть проблема с отступами на
if len(elem):
Я думаю, это должно решить ее.