如何使用lxml在xml标签中添加特殊字符?

时间:2018-11-16 10:48:31

标签: python-2.7 lxml

我正在尝试使用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>

1 个答案:

答案 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>