使用fromstring()与lxml前缀

2 投票
1 回答
2345 浏览
提问于 2025-04-18 14:11

我有一个变量叫做 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" />')

撰写回答