在Python中转义XML属性

时间:2019-01-29 15:32:06

标签: python xml escaping

如何转义字符串以便可以在XML属性中使用?

我不是不是从python代码中以编程方式设置属性-我只需要创建一个可用作XML属性的有效字符串即可。

我尝试过:

from xml.sax.saxutils import escape, quoteattr

print (escape('<&% "eggs and spam" &>'))
# >>> &lt;&amp;% "eggs and spam" &amp;&gt;

print (quoteattr('<&% "eggs and spam" &>'))
# >>> '&lt;&amp;% "eggs and spam" &amp;&gt;'

问题是escape()quoteattr()都没有转义双引号字符,即"

当然,我可以对转义的字符串执行.replace('"', '&quot;'),但是我假设应该有一种方法可以使用现有的API(来自标准库或第三方模块,例如{ {1}}。

更新 :我发现Python3的html.escape产生了预期的结果,但是我不愿在XML上下文中使用它,因为我假设HTML转义可能遵循与XML标准(https://www.w3.org/TR/xml/#AVNormalize)要求不同的规范。

1 个答案:

答案 0 :(得分:1)

sh()被偷偷偷窃(经过一些修改):

tornado