python / genshi如何生成动态XML元素

时间:2012-05-29 19:25:20

标签: python xhtml escaping genshi

我在Python中直接使用Genshi,使用包含大部分XML内容的模板生成XML。 但是,模板中的某些XML元素应该获取由Python程序动态生成的子元素。

这些是我用于Genshi渲染的参数(在Python中):

stream.render(method='xml', encoding="utf-8", out=outfile_fp, doctype=None)

Genshi模板的片段:

<mrp:Description py:if="description != None">
    <mrp:XHTMLWithLinks>${description}</mrp:XHTMLWithLinks>
</mrp:Description>

示例值(在Python中):

description = "<p>foo&bar</p>"

实际上,这些值更复杂,并且是有效的XHTML。从模板的角度来看,它们的结构是不可预测的。

Genshi将此呈现为以下输出:

<mrp:Description>
    <mrp:XHTMLWithLinks>&lt;p&gt;foo&amp;bar&lt;/p&gt;</mrp:XHTMLWithLinks>
</mrp:Description>

因此XML-escape特殊的XML字符。

一方面,我对此表示同情,另一方面,我不清楚如何解决问题。

奇怪的是,我在这里找到了一些将XML作为变量值的答案,似乎表明Genshi没有对它们进行XML转义,例如herehere

安迪

1 个答案:

答案 0 :(得分:0)

您应该能够将描述字符串包装在Markup instance中。像

这样的东西
from genshi.core import Markup 
description = Markup(description)