Мне нужно создать файл XML на работе, и у меня есть таблица Excel, из которой я импортирую данные. Всего существует 8 «уровней», и многие имена данных совпадают, поэтому, например, если в третьей строке в третьем столбце есть имя «Data_example», оно должно появиться только один раз в структуре XML. Я сделал это, но мне пришлось вручную написать 8 уровней. Идея состоит в том, чтобы написать общий код, то есть он автоматически создает столько уровней, сколько имеется в файле Excel. Вот часть кода, где у меня проблема:
root = etree.Element('SystemStructure', attrib={'ProjectID': '1', 'Name': 'Test Project'})
component0 = etree.SubElement(root, 'Component', attrib={'Name': list_matrix[0][0], 'CCL': ''})
component_before = component0
for i in range(1,column_number):
component_now = 'component' + str(i)
if str(list_matrix[0][i]) == 'nan':
pass
else:
component_now = etree.SubElement(component_before, 'Component', attrib={'Name': list_matrix[0][i], 'CCL': ''})
component_before = component_now
component_before = etree.SubElement(root, 'Component', attrib={'Name': list_matrix[1][0], 'CCL': ''})
for i in range(1,500):
for j in range(0,column_number):
if list_matrix[i][j] == list_matrix[i-1][j]:
pass
else:
component_before = etree.SubElement(???, 'Component', attrib={'Name': list_matrix[i][j-1], 'CCL': ''}))
for k in range(j,column_number):
component_now = 'component' + str(j)
if str(list_matrix[i][j]) == 'nan':
pass
else:
component_now = etree.SubElement(component_before, 'Component', attrib={'Name': str(list_matrix[i][j]), 'CCL': ''})
component_before = component_now
Проблема в части где ??? написано, т.е. элемент _parent. Если это так, что мне нужно создать новый подэлемент с четвертого уровня, как я могу перейти на третий уровень и получить
component_before = etree.SubElement(_parent from third level, 'Component', attrib={'Name': list_matrix[i][j-1], 'CCL': ''}))?
Надеюсь, понятно, о чем я спрашиваю
С наилучшими пожеланиями!