在我的web2py应用中,我正在处理项目列表,用户可以在其中单击每个项目的链接以选择此项。一个项目具有UUID,标题和描述。为了更好的定位,项目描述也显示为链接标题。为了防止描述中的插入和转义,我使用XML清理器,如下所示:
A(this_item.title, \
callback = URL('item', 'select', \
vars=dict(uuid=this_item.uuid), user_signature=True), \
_title=XML(str_replace(this_item.description, {'\r\n':' ', '<':'<', '>':'>'}), sanitize=True))
使用Python 2,一切都很好。由于我已切换到Python 3,因此遇到以下问题。当说明中包含换行符时,消毒器将无法工作。例如,我的str_replace例程产生的以下字符串可以在XML 2下用XML helper进行清理,而在Python 3下则不行:
Header Line1 Line2 Line3
逃脱的换行符是Python 3的问题(但不是Python 2的问题)。 XML助手需要清理的其他所有内容都没有问题(例如,小于或大于我需要的这些,因为如果没有描述,它将生成为<no description>
)。
如何在XML3下运行web2py的XML帮助程序清除换行符?
感谢您的支持!
最好的问候克莱门斯
这取决于python的HTMLParser类在3.4和3.5之间的更改,其中convert_charrefs开始默认默认为True:Python 3.4 DeprecationWarning convert_charrefs
我认为您的web2py yatl源代码中的以下修复程序应予以纠正:https://github.com/web2py/yatl/compare/master...timnyborg:patch-1