query_to_xml()

将查询结果转换为 XML 的函数

query_to_xml() 是一个系统函数,用于将查询结果映射到 XML

query_to_xml()PostgreSQL 8.3 中添加。

用法

query_to_xml ( query text, nulls boolean, tableforest boolean, targetns text )
         → xml

query 是其输出将转换为 XML 的 PostgreSQL 查询。请注意,如果提供 NULL,则函数将返回 NULL

nulls 设置为 true 时,将输出中表示为

<columnname xsi:nil="true"/>

如果 nulls 设置为 false,则输出中将省略 NULL 值。

tableforest 设置为 true 时,将每个列集包装在 <table> 元素中;设置为 false 时,将每个列集包装在外部 <table> 元素中包含的 <row> 元素中。

targetns 指定结果的 XML 命名空间。如果提供空字符串,则不使用命名空间。请注意,如果提供 NULL,则函数将返回 NULL

更改历史

示例

query_to_xml() 的基本用法示例

postgres=# CREATE TABLE foo (id INT, val TEXT);
CREATE TABLE

postgres=# INSERT INTO foo VALUES(generate_series(1,2), clock_timestamp());
INSERT 0 2

postgres=# SELECT query_to_xml('SELECT * FROM foo', true, true, '');
                        query_to_xml
-------------------------------------------------------------
 <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">+
   <id>2</id>                                               +
   <val>2023-09-18 19:33:41.915739+09</val>                 +
 </row>                                                     +
                                                            +
 <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">+
   <id>1</id>                                               +
   <val>2023-09-18 19:33:41.91568+09</val>                  +
 </row>                                                     +
                                                            +

(1 row)

同上,但 tableforest 设置为 false

postgres=# SELECT query_to_xml('SELECT * FROM foo', true, false, '');
                         query_to_xml
---------------------------------------------------------------
 <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">+
                                                              +
 <row>                                                        +
   <id>2</id>                                                 +
   <val>2023-09-18 19:33:41.915739+09</val>                   +
 </row>                                                       +
                                                              +
 <row>                                                        +
   <id>1</id>                                                 +
   <val>2023-09-18 19:33:41.91568+09</val>                    +
 </row>                                                       +
                                                              +
 </table>                                                     +

(1 row)

nulls 设置为 truefalse 的行为

postgres=# UPDATE foo SET val = NULL;
UPDATE 2

postgres=# SELECT query_to_xml('SELECT * FROM foo', true, true, '');
                        query_to_xml
-------------------------------------------------------------
 <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">+
   <id>2</id>                                               +
   <val xsi:nil="true"/>                                    +
 </row>                                                     +
                                                            +
 <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">+
   <id>1</id>                                               +
   <val xsi:nil="true"/>                                    +
 </row>                                                     +
                                                            +

(1 row)

postgres=# SELECT query_to_xml('SELECT * FROM foo', false, true, '');
                        query_to_xml
-------------------------------------------------------------
 <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">+
   <id>2</id>                                               +
 </row>                                                     +
                                                            +
 <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">+
   <id>1</id>                                               +
 </row>                                                     +
                                                            +

(1 row)

targetns 指定值

postgres=# SELECT query_to_xml('SELECT * FROM foo', true, true, 'foo');
                              query_to_xml
-------------------------------------------------------------------------
 <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="foo">+
   <id>2</id>                                                           +
   <val xsi:nil="true"/>                                                +
 </row>                                                                 +
                                                                        +
 <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="foo">+
   <id>1</id>                                                           +
   <val xsi:nil="true"/>                                                +
 </row>                                                                 +
                                                                        +

(1 row)

分类

系统函数XML

参见

query_to_xmlschema()query_to_xml_and_xmlschema()table_to_xml()cursor_to_xml()database_to_xml()schema_to_xml()

反馈

提交关于 "query_to_xml()" 的任何评论、建议或更正 在此