使用fromstring()与lxml前缀
我有一个变量叫做 ele。我想在 ele 上添加一个子节点,这个子节点的标签里包含一个命名空间前缀(叫做 style)。ele 似乎知道这个前缀,因为这行代码:
print(ele.nsmap['style'])
输出了
urn:oasis:names:tc:opendocument:xmlns:style:1.0
但是当我尝试运行
ele.append(etree.fromstring('<style:style />'))
时,我遇到了错误
lxml.etree.XMLSyntaxError: Namespace prefix style on style is not defined
我漏掉了什么呢?
1 个回答
1
etree.fromstring('<style:style />')
会报错,因为 <style:style />
是一个小的 XML 文档,但它没有符合命名空间的要求。
如果你想把这个文档作为参数传给 fromstring()
,你需要在文档中声明命名空间:
etree.fromstring('<style:style xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" />')