Python 如何为RSS提要动态生成XML文件?
我想创建一个RSS提要生成器。生成器应该从我的数据库读取数据并为它们生成RSS提要。我想编写一个脚本,自动生成xml文件进行验证 因此,如果RSS提要的典型xml文件如下所示:Python 如何为RSS提要动态生成XML文件?,python,rss,Python,Rss,我想创建一个RSS提要生成器。生成器应该从我的数据库读取数据并为它们生成RSS提要。我想编写一个脚本,自动生成xml文件进行验证 因此,如果RSS提要的典型xml文件如下所示: <item> <title>Entry Title</title> <link>Link to the entry</link> <guid>http://example.com/item/123</guid> <
<item>
<title>Entry Title</title>
<link>Link to the entry</link>
<guid>http://example.com/item/123</guid>
<pubDate>Sat, 9 Jan 2010 16:23:41 GMT</pubDate>
<description>[CDATA[ This is the description. ]]</description>
</item>
我希望脚本自动替换和标记之间的字段。
对于所有的标签也是如此。标记的值将从数据库中获取。因此,我将查询它。我的应用程序是用Django设计的
我正在寻找关于如何在python中实现这一点的建议。如果我的想法含糊不清,我也愿意接受任何其他选择。到目前为止,你都做了哪些尝试 一种非常基本的方法是使用查询数据库,并使用I直接在SO-SO中键入来执行一些简单的格式设置,请注意拼写错误:
>>> RSS_HEADER = """
<whatever><you><need>
"""
>>> RSS_FOOTER = """
</need></you></whatever>
"""
>>> RSS_ITEM_TEMPLATE = """
<item>
<title>{0}</title>
<link>{1}</link>
</item>
"""
>>> print RSS_HEADER
>>> for row in c.execute('SELECT title, link FROM MyThings ORDER BY TheDate'):
print RSS_ITEM_TEMPLATE.format(*row)
>>> print RSS_FOOTER
这段粗略的代码使用了一个非常有用的库,名为。它充当HTML/XML标记语言的解析器,提供python对象模型。它可以用于从XML中提取/更改信息,或者通过构建对象模型来创建XML 下面的代码通过更改pastebin上模板的XML标记来工作。它通过复制模板项标记、清除其子标记并用合适的字典条目填充它们来实现这一点,这些条目可能来自数据库
# Import System libraries
from copy import copy
from copy import deepcopy
# Import Custom libraries
from BeautifulSoup import BeautifulSoup, BeautifulStoneSoup, Tag, NavigableString, CData
def gen_xml(record):
description_blank_str = \
'''
<item>
<title>Entry Title</title>
<link>Link to the entry</link>
<guid>http://example.com/item/123</guid>
<pubDate>Sat, 9 Jan 2010 16:23:41 GMT</pubDate>
<description>[CDATA[ This is the description. ]]</description>
</item>
'''
description_xml_tag = BeautifulStoneSoup(description_blank_str)
key_pair_locations = \
[
("title", lambda x: x.name == u"title"),
("link", lambda x: x.name == u"link"),
("guid", lambda x: x.name == u"guid"),
("pubDate", lambda x: x.name == u"pubdate"),
("description", lambda x: x.name == u"description")
]
tmp_description_tag_handle = deepcopy(description_xml_tag)
for (key, location) in key_pair_locations:
search_list = tmp_description_tag_handle.findAll(location)
if(not search_list):
continue
tag_handle = search_list[0]
tag_handle.clear()
if(key == "description"):
tag_handle.insert(0, CData(record[key]))
else:
tag_handle.insert(0, record[key])
return tmp_description_tag_handle
test_dict = \
{
"title" : "TEST",
"link" : "TEST",
"guid" : "TEST",
"pubDate" : "TEST",
"description" : "TEST"
}
print gen_xml(test_dict)
因为这是python。使用PyRSS2Gen很好。它易于使用,并且生成的xml非常好 请注意,这不是节的有效语法。正确的语法是什么?如果你仔细看我的评论,你会看到一个链接。只需点击,为什么是votedown?如果有解释的话会有帮助的。c.execute应该是什么意思?你没有回答我的问题,到目前为止你尝试了什么?无论如何,我编辑了答案,提供了一些基本文档的链接。我一直在研究PyRSS2Gen。