xmlelement()
是一个用于生成具有给定名称、属性和内容的 XML 元素的系统函数。
xmlelement()
在 PostgreSQL 8.3 中添加。
用法
xmlelement (NAME
name
[,XMLATTRIBUTES
( attvalue [ ASattname
] [, ...] ) ] [,content
[, ...]] )
→ xml
请注意,name
和任何 attname
值都是 SQL 标识符,而不是字符串值。例如,要创建 XML 元素 foo
,请提供
xmlelement(name foo)
而不是
xmlelement(name 'foo')
.
必须提供属性名称,除非属性值是列引用。
如果任何元素或属性名称不是有效的 XML,则它们将通过将任何无效字符替换为该字符的 Unicode 代码点(以十六进制表示法表示,格式为 _xHHHH_
)来转义。例如,字符 $
将编码为 _x0024_
。
XMLATTRIBUTES
是一个语法元素,而不是函数。
多个 content
值将被连接。
变更历史
- PostgreSQL 8.3
- 添加(提交 8c1de5fb)
示例
xmlelement()
的基本用法示例
postgres=# SELECT xmlelement(name foo); xmlelement ------------ <foo/> (1 row)
在生成的 XML 元素中包含属性
postgres=# SELECT xmlelement(name foo, xmlattributes('xyz' AS bar)); xmlelement ------------------ <foo bar="xyz"/> (1 row)
在生成的 XML 元素中包含内容
postgres=# SELECT xmlelement(name foo, 'Lorem ipsum'); xmlelement ------------------------ <foo>Lorem ipsum</foo> (1 row)
多个 content
值将被连接
postgres=# SELECT xmlelement(name foo, 'Lorem ipsum', ' ', 'dolor sit amet'); xmlelement --------------------------------------- <foo>Lorem ipsum dolor sit amet</foo> (1 row)
必须指定属性名称
postgres=# SELECT xmlelement(name foo, xmlattributes('xyz')); ERROR: unnamed XML attribute value must be a column reference LINE 1: SELECT xmlelement(name foo, xmlattributes('xyz'));
除非它们是列引用
postgres=# CREATE TABLE bar (a text, b text); CREATE TABLE postgres=# INSERT INTO bar VALUES('hello', 'world'); INSERT 0 1 postgres=# SELECT xmlelement(name foo, xmlattributes(a, b)) FROM bar; xmlelement ---------------------------- <foo a="hello" b="world"/> (1 row)
不是有效 XML 名称的元素和属性名称将把不符合规范的字符替换为该字符的 Unicode 代码点(以十六进制表示法表示)
postgres=# SELECT xmlelement(name "foo$bar", xmlattributes('xyz' as "a&b")); xmlelement ---------------------------------- <foo_x0024_bar a_x0026_b="xyz"/> (1 row)
参考
- PostgreSQL 文档: Xmlelement