如何在PostgreSQL中对字符串进行XML编码?

时间:2013-01-09 12:46:35

标签: postgresql plpgsql postgresql-9.1 postgresql-9.2

问题:我可以在Postgres中创建一个XML编码的字符串,如下所示:

SELECT xmlelement(name name, 'AT&T', null )

现在我想获取xml编码的值,也就是说AT&T

但如果我这样做:

SELECT unnest(xpath('/name/text()', xmlelement(name name, 'AT&T', null )))

然后我得到AT&T,而不是AT&T

如何获取XML编码的值?

此外,是否可以向xmlelement提供空名称,并且只能转换为varchar?

2 个答案:

答案 0 :(得分:3)

我建议使用一个简单的功能。

create or replace function xml_escape(s text) returns text as
$$
  select replace(replace(replace(s, '&', '&amp;'), '>', '&gt;'), '<', '&lt;');
$$
language sql immutable strict;

答案 1 :(得分:1)

如果您正在写一个HTML客户端,那么您将不得不通过HTML转义它以显示原始HTML。

我认为你主要是一个C#开发人员,那么静态方法HttpUtility.HtmlEncode()就可以了。