Я пытаюсь написать функцию синтаксического анализа для преобразования указанных c xml
данных во фрейм данных в python.
Данные XML имеют следующую структуру
<?xml version='1.0' encoding='UTF-8'?><package_D15D.HISTORY xmlns="http://xml.mscibarra.com/ns/msci/deal/D15D.HISTORY" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xml.mscibarra.com/ns/msci/deal/D15D.HISTORY 20140602_20140630_CORE_DM_SEC_MAIN_DAILY.xsd">
<dataset_D15D>
<entry calc_date="2014-06-02" ... >
</entry>
<entry ...
Здесь можно найти образец данных здесь .
Ну, каждая строка между двумя </entry>
. Я написал следующую функцию:
def parse_XML(xml_file, df_cols):
xtree = et.parse(xml_file)
xroot = xtree.getroot()
rows = []
for node in xroot:
print(xroot)
res = []
res.append(node.attrib.get(df_cols[0]))
for el in df_cols[1:]:
if node is not None and node.find(el) is not None:
res.append(node.find(el).text)
else:
res.append(None)
rows.append({df_cols[i]: res[i]
for i, _ in enumerate(df_cols)})
out_df = pd.DataFrame(rows, columns=df_cols)
out_df.to_csv('C:/Users/dataa', sep=';', encoding='utf-8')
return out_df
Однако, фрейм данных пуст при вызове функции. Есть идеи?