使用fromstring()和lxml前缀

时间:2014-07-22 00:08:01

标签: python lxml elementtree

我有一个变量ele。我正在尝试将子节点附加到其标记中包含名称空间前缀(称为样式)的ele。 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 个答案:

答案 0 :(得分:1)

etree.fromstring('<style:style />')会引发错误,因为<style:style />是一个非namespace-well-formed的小型XML文档。

如果要将其作为fromstring()的参数提供,则必须在文档中声明命名空间:

etree.fromstring('<style:style xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" />')