Добавление динамического количества тегов в LXML - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть следующий код кода:

from lxml import etree
dataset = etree.Element("trace_data")
# create childs of dataset
pinfo   = etree.SubElement(dataset, "pinfo")
pinfo.text = processinfo
traces  = etree.SubElement(dataset, "traces")

#enumerate over all traces, create a subelement to the traces element with an index for every element
for index,trace in enumerate(traces):
    trace_xml       = etree.SubElement(traces,str(index))
    trace_xml.text  = trace

Который, к моему замешательству, не заполняет подэлементы следов, но генерирует XML как:

<trace_data><pinfo>1</pinfo><traces/></trace_data>

Даже если яимел в виду перебор списка строк с именем trace, затем добавление тега для каждого элемента в списке:

<trace_data><pinfo>1</pinfo><traces><trace1>"test"</trace1><trace2>"test2"</trace2</traces></trace_data> 

и т. д.

Я подозреваю, что это может произойтииз того, как я пытаюсь создать подэлементы для тега traces.

Как можно создать подэлемент для тега traces для каждого элемента в списке?

Заранее спасибо.

1 Ответ

0 голосов
/ 28 февраля 2019

Обнаружена ошибка:

processinfo всегда содержит числовое значение, например, 1 LXML не позволяет тегам начинаться с цифры и поэтому выдает ошибку.

Я не смог увидеть эту ошибку из-за плохой обработки исключений.

...