XML內容生成部分
SQL數據生成XML的函數。
1. xmlcomment:生成注釋函數。
xmlcomment(text )
例:
SELECT xmlcomment('hello');
xmlcomment
--------------
<!--hello-->
2. xmlconcat:XML連接函數
xmlconcat(xml [, ...])
例:
SELECT xmlconcat('<abc/>', '<bar>foo</bar>');
xmlconcat
----------------------
<abc/><bar>foo</bar>
連接的XML數據中如果有多個版本聲明的話,連接后的XML只有一個版本聲明。
例:
SELECT xmlconcat('<?xml version="1.1"?><foo/>', '<?xml version="1.1" standalone="no"?><bar/>');
xmlconcat
-----------------------------------
<?xml version="1.1"?><foo/><bar/>
3. xmlelement:生成XML元素函數
xmlelement(name name [, xmlattributes( value [AS attname ] [, ... ])] [ , content, ... ])
例:
SELECT xmlelement(name foo);
xmlelement
------------
<foo/>
SELECT xmlelement(name foo, xmlattributes('xyz' as bar));
xmlelement
------------------
<foo bar="xyz"/>
SELECT xmlelement(name foo, xmlattributes(current_date as bar), 'cont', 'ent');
xmlelement
-------------------------------------
<foo bar="2007-01-26">content</foo>
如果有非法字符的話,非常字符會用 16進制的數字表示出來。
例子:SELECT xmlelement(name "foo$bar", xmlattributes('xyz' as "a&b"));
xmlelement
----------------------------------
<foo_x0024_bar a_x0026_b="xyz"/>
4. xmlforest:生成XML FOREST函數
xmlforest(content [AS name ] [, ...])
例:
SELECT xmlforest('abc' AS foo, 123 AS bar);
xmlforest
------------------------------
<foo>abc</foo><bar>123</bar>
SELECT xmlforest(table_name, column_name)
FROM information_schema.columns
WHERE table_schema = 'pg_catalog';
xmlforest
-------------------------------------------------------------------------------------------
<table_name>pg_authid</table_name><column_name>rolname</column_name>
<table_name>pg_authid</table_name><column_name>rolsuper</column_name>
...
5. xmlpi:生成XML處理命令函數。
xmlpi(name target [, content ])
例:
SELECT xmlpi(name php, 'echo "hello world";');
xmlpi
-----------------------------
<?php echo "hello world";?>
6. xmlroot:修改XML值的根節點屬性函數
xmlroot(xml , version text |no value [, standalone yes|no|no value])
例子:SELECT xmlroot(xmlparse(document '<?xml version="1.1"?><content>abc</content>'),
version '1.0', standalone yes);
xmlroot
----------------------------------------
<?xml version="1.0" standalone="yes"?>
<content>abc</content>
7. xmlagg:xmlagg是集約函數
xmlagg(xml )
例:
CREATE TABLE test (y int, x xml);
INSERT INTO test VALUES (1, '<foo>abc</foo>');
INSERT INTO test VALUES (2, '<bar/>');
SELECT xmlagg(x) FROM test;
xmlagg
----------------------
<foo>abc</foo><bar/>
可以用下面類型的方法改變連接順序。
SELECT xmlagg(x) FROM (SELECT * FROM test ORDER BY y DESC) AS tab;
xmlagg
----------------------
<bar/><foo>abc</foo>
Processing XML
為了處理XML數據,PostgreSL中提供了xpath函數。
xpath(xpath , xml [, nsarray ])
例:
SELECT xpath('/my:a/text()', '<my:a xmlns:my="http://example.com">test</my:a>',
ARRAY[ARRAY['my', 'http://example.com']]);
xpath
--------
{test}
(1 row)
XML和table的映射
以下函數可以導出XML。
table_to_xml(tbl regclass, nulls boolean, tableforest boolean, targetns text)
query_to_xml(query text, nulls boolean, tableforest boolean, targetns text)
cursor_to_xml(cursor refcursor, count int, nulls boolean,
tableforest boolean, targetns text)
這些函數的返回值都是XML類型。
還有以下函數。具體內容可以參看用戶手冊。
table_to_xmlschema(tbl regclass, nulls boolean, tableforest boolean, targetns text)
query_to_xmlschema(query text, nulls boolean, tableforest boolean, targetns text)
cursor_to_xmlschema(cursor refcursor, nulls boolean, tableforest boolean, targetns text)
table_to_xml_and_xmlschema(tbl regclass, nulls boolean, tableforest boolean, targetns text)
query_to_xml_and_xmlschema(query text, nulls boolean, tableforest boolean, targetns text)
schema_to_xml(schema name, nulls boolean, tableforest boolean, targetns text)
schema_to_xmlschema(schema name, nulls boolean, tableforest boolean, targetns text)
schema_to_xml_and_xmlschema(schema name, nulls boolean, tableforest boolean, targetns text)
database_to_xml(nulls boolean, tableforest boolean, targetns text)
database_to_xmlschema(nulls boolean, tableforest boolean, targetns text)
database_to_xml_and_xmlschema(nulls boolean, tableforest boolean, targetns text)
PostgreSQL中的XML操作函數代碼
2020-04-21 15:08PostgreSQL教程網 PostgreSQL
PostgreSQL中的XML操作函數代碼,有需要的朋友可以參考一下。
延伸 · 閱讀
- 2022-03-08分布式 PostgreSQL之Citus 架構
- 2022-03-07C#操作XML文件步驟
- 2022-03-07Spring Xml裝配Bean的思路詳解
- 2022-03-02C#使用XmlDocument或XDocument創建xml文件
- 2022-03-01目前好用的五大PostgreSQL GUI 可視化工具
- 2022-03-01三大流行數據庫(MongoDB、PostgreSQL和Harper)大比拼
- PostgreSQL
PostgreSQL中的XML操作函數代碼
PostgreSQL中的XML操作函數代碼,有需要的朋友可以參考一下。...
- PostgreSQL
解決postgresql 序列跳值的問題
這篇文章主要介紹了解決postgresql 序列跳值的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...
- PostgreSQL
詳解PostgreSQL 語法中關鍵字的添加
這篇文章主要介紹了詳解PostgreSQL 語法中關鍵字的添加的相關資料,這里說明下在parser語法解析模塊添加關鍵字,需要的朋友可以參考下 ...
- PostgreSQL
postgresql 中的幾個 timeout參數 用法說明
這篇文章主要介紹了postgresql中的幾個timeout參數用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...
- PostgreSQL
PostgreSQL利用遞歸優化求稀疏列唯一值的方法
這篇文章主要介紹了PostgreSQL利用遞歸優化求稀疏列唯一值的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友...
- PostgreSQL
使用pg_basebackup對Postgre進行備份與恢復的實現
這篇文章主要介紹了使用pg_basebackup對Postgre進行備份與恢復的實現操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...
- PostgreSQL
PostgreSQL中Slony-I同步復制部署教程
這篇文章主要給大家介紹了關于PostgreSQL中Slony-I同步復制部署的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用PostgreSQL具有一定的參考...
- PostgreSQL
圖解PostgreSQL進程結構和內存結構
客戶端與Postgres進程建立通信連接,由Postgres進程負責后續所有的客戶端請求操作,直至客戶端退出后,該Postgres進程消失。...