Как добавить специальные символы в тег XML с помощью lxml? - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь создать XML-файл, используя lxml, как показано ниже

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 голосов
/ 19 ноября 2018

Похоже, вы пытаетесь создать атрибут, а не дочерний элемент.(По-прежнему сложно сказать, поскольку имена элементов / атрибутов в вашем 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>
...