我正在尝试使用lxml如下创建xml文件
from lxml import etree
var = "xyz"
root = etree.Element("Demo_root")
a = etree.SubElement(root, "Demo2='"+var+"'")
获取错误为
无效的标签名称
在代码的第4行,我不能给出任何特殊字符。那我该怎么处理。
我的文件应为
<x Name="dem1">
<y Name="dem2" Value="1"/>
<y Name="dem3" Value="2"/>
</x>
答案 0 :(得分:2)
您似乎要尝试创建一个属性而不是一个子元素。 (由于XML中的元素/属性名称与代码中的内容不匹配,因此很难说出来。)
要创建属性,可以使用set()
。
在您的示例中创建XML的示例...
from lxml import etree
var = "dem1" # A variable isn't needed, but I included it anyway since your original code had it.
root = etree.Element("x")
root.set("Name", var)
for x in range(1, 3):
elem = etree.Element("y")
elem.set("Name", "dem{}".format(x + 1))
elem.set("Value", str(x))
root.append(elem)
etree.dump(root)
输出...
<x Name="dem1">
<y Name="dem2" Value="1"/>
<y Name="dem3" Value="2"/>
</x>