python lxml使用ilegal外壳添加项目名称

python lxml使用ilegal外壳添加项目名称,python,lxml,Python,Lxml,我想使用python为wordpress构建xml 这是我当前的代码: #!/usr/bin/python import lxml.etree import lxml.builder from lxml import etree E = lxml.builder.ElementMaker() RSS = E.rss channel = E.channel ITEM = E.item FIELD1 = E.field1 FIELD2 = E.field2 title = E.title

我想使用python为wordpress构建xml

这是我当前的代码:

#!/usr/bin/python
import lxml.etree
import lxml.builder 
from lxml import etree   

E = lxml.builder.ElementMaker()
RSS = E.rss
channel = E.channel
ITEM = E.item
FIELD1 = E.field1
FIELD2 = E.field2
title = E.title
link = E.link
description = E.description
pubDate = E.pubDate
language = E.language

the_doc = RSS(
    channel(
        title("feed rss test by python"),
        link("https://localhost/"),
        description("description site"),
        pubDate("Mon, 23 Sep 2019 10:25:12 +0000"),
        language("en-US"),
    )
)

tmp = ITEM(
        title("title"),
        link("link"),
        pubDate("Mon, 23 Sep 2019 10:25:12 +0000"),
        description("test description"),
    )  

the_doc.append(RSS(channel(tmp)))

test = lxml.etree.tostring(the_doc, pretty_print=True, xml_declaration=True, encoding='UTF-16')

with open("data.xml", 'wb') as output:
    output.write(test)

代码正在运行,我的问题是我想在表item中添加新的item
wp:status
,python不允许用声明变量:。。。如何使用名称声明xml项
wp:status

如果我正确获得了您的问题,您需要通过xml.builder.ElementMaker工厂制作一个名为“wp:status”的标记

根据这一点,可以使用其他api
E
公开:

E = lxml.builder.ElementMaker()
wp_status = E("wp:status")

tmp = ITEM(
    wp_status("cool status"),
     ...
)  

ValueError:无效的标记名“wp:status”不以这种方式工作:(请查看此处:
用于构建名称空间,因此您不能这样添加。您需要使用名称空间的语法。我想这里回答了这个问题: