【发布时间】:2020-10-05 07:04:48
【问题描述】:
我正在使用 lxml 生成最终用作播客的 RSS 提要。这意味着我需要添加命名空间元素,例如 <itunes:duration> 和 <itunes:subtitle>。但是我在试图弄清楚如何使用 lxml 动态创建这样的元素时遇到了很多麻烦。
如果我只是尝试:
from lxml import etree
element = etree.Element("itunes:duration")
我明白了:
ValueError: Invalid tag name 'itunes:duration'
接下来我试了一下,离得更近了一点:
from lxml import etree
etree.register_namespace("itunes", "http://www.itunes.com/dtds/podcast-1.0.dtd")
element = etree.Element("{itunes}duration")
print(etree.tostring(element).decode("utf-8"))
然而这导致了这个输出:
<ns0:duration xmlns:ns0="itunes"/>
因此,虽然这比例外要好,但显然还是不对。如何在标签名称中创建带有 itunes: 前缀的元素?
【问题讨论】:
-
您是否尝试阅读有关命名空间的 lxml 教程部分 lxml.de/tutorial.html#namespaces - 通过使用流行的搜索引擎搜索以下内容,您可能可以找到有关此主题的许多其他信息来源:lxml 命名空间
-
@barny 是的,我赚不到两美分。我希望有人已经这样做并且可以提供更简洁的代码 sn-p。
标签: python xml lxml xml-namespaces podcast