在Python中使用lxml在XML attrib中添加空格

时间:2016-01-28 08:46:50

标签: python html lxml

from lxml import etree

html = etree.Element("html")
body = etree.SubElement(html, "body")
body.text = "TEXT"
body.set("p style", "color:red")
print(etree.tostring(html))

给我错误:ValueError:无效的属性名称u' p style'

1 个答案:

答案 0 :(得分:1)

您不能在XML中拥有包含空格的属性,这是lxmletree的用途。 XML规范说明了有效的属性名称是here

如果你想要实现这个目标:

<html><body p style="color:red">TEXT</body></html>

你不能用XML做到这一点。您可以在HTML中执行类似的操作:空属性。有关详细信息,请参阅the HTML5 specification。但是你不会使用上面写的那种代码来获得结果。

如果您想获得以下结果(似乎更有可能):

<html><body><p style="color:red">TEXT</p></body></html>

然后很容易。

from lxml import etree

html = etree.Element("html")
body = etree.SubElement(html, "body")
p = etree.subElement(body, "p")
p.text = "TEXT"
p.set("style", "color:red")
print(etree.tostring(html))