在LXML中添加动态数量的标签

时间:2019-02-28 19:38:38

标签: python-3.x lxml

我有以下代码段:

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标签创建子元素的方式。

为列表中每个元素的标记痕迹创建子元素的方法有哪些?

谢谢。

1 个答案:

答案 0 :(得分:0)

发现错误:

processinfo始终包含一个数字值,例如1个 LXML不允许标签以数字开头,因此会引发错误。

由于处理不当而无法看到此错误。