Python xml создание подэлементов, но уровень пропуска - PullRequest
0 голосов
/ 22 февраля 2020

Мне нужно создать файл 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': ''}))?

Надеюсь, понятно, о чем я спрашиваю

С наилучшими пожеланиями!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...