KingbaseES 原生XML系列一 -- XML构造函数
KingbaseES 原生XML系列一--XML构造函数(XML,XMLPARSE,XMLSERIALIZE,IS-DOCUMENT,XML_IS_WELL_FORMED,XML_IS_WELL_FORMED_CONTENT,XML_IS_WELL_FORMED_DOCUMENT)
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的一种公共语言。在不同平台下产生的信息,可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。
xml数据类型可以被用来存储XML数据。它比直接在一个text域中存储XML数据的优势在于,它会检查输入值的结构是不是良好,并且有支持函数用于在其上执行类型安全的操作。
本文详细介绍了KingbaseES中集成的相关xml构造函数使用。
准备数据:
CREATE TABLE "public"."xmldata" (
"id" integer NULL,
"comm" varchar NULL,
"xmlvarchar" varchar NULL,
"xmldata" xml NULL,
"XMLarray" xml NULL
);
INSERT INTO xmldata values(1, 'zhangsan' , '<kes>aaa</kes>' , '<kes><sql>sql001</sql><rac>rac001</rac></kes>' , '<kes><version>v8r3001</version><version>v8r6001</version></kes>');
INSERT INTO xmldata values(2, 'lisi' , '<kes>bbb</kes>' , '<kes><sql>sql002</sql><rac>rac002</rac></kes>' , '<kes><version>v8r3002</version><version>v8r6002</version></kes>');
INSERT INTO xmldata values(3, 'wangwu' , '<kes>ccc</kes>' , '<kes><sql>sql003</sql><rac>rac003</rac></kes>' , '<kes><version>v8r3003</version><version>v8r6003</version></kes>');
xml函数列表
- XML
- XMLPARSE
- XMLSERIALIZE
- IS-DOCUMENT
- XML_IS_WELL_FORMED
- XML_IS_WELL_FORMED_CONTENT
- XML_IS_WELL_FORMED_DOCUMENT
json函数简介
XML
功能:
从字符数据中生成一个xml类型的值。
用法:
xml( text )
示例:
test=# select xml(comm) ,sys_typeof( xml(comm)),comm from xmldata ;
xml | sys_typeof | comm
----------+------------+----------
zhangsan | xml | zhangsan
lisi | xml | lisi
wangwu | xml | wangwu
(3 行记录)
XMLPARSE
功能:
从字符数据中生成一个xml类型的值,可以使用函数xmlparse。
用法:
XMLPARSE ( { DOCUMENT | CONTENT } value)
示例:
-- DOCUMENT 字符生成xml格式,字符需要是xml标准格式
test=# select xmlparse(document xmlvarchar) from xmldata ;
xmlparse
----------------
<kes>aaa</kes>
<kes>bbb</kes>
<kes>ccc</kes>
(3 行记录)
-- CONTENT 将字符生成xml格式的xml值
test=# select xmlparse(content comm) ,sys_typeof(xmlparse(content comm)) from xmldata ;
xmlparse | sys_typeof
----------+------------
zhangsan | xml
lisi | xml
wangwu | xml
(3 行记录)
XMLSERIALIZE
功能:
作为xmlparse逆操作,从xml产生一个字符串。
用法:
XMLSERIALIZE ( { DOCUMENT | CONTENT } value AS type )
type可以是 character、character varying或 text
示例:
test=# select xmlserialize(document xmldata as text),xmlserialize(document xmldata as varchar) from xmldata ;
xmlserialize | xmlserialize
-----------------------------------------------+-----------------------------------------------
<kes><sql>sql001</sql><rac>rac001</rac></kes> | <kes><sql>sql001</sql><rac>rac001</rac></kes>
<kes><sql>sql002</sql><rac>rac002</rac></kes> | <kes><sql>sql002</sql><rac>rac002</rac></kes>
<kes><sql>sql003</sql><rac>rac003</rac></kes> | <kes><sql>sql003</sql><rac>rac003</rac></kes>
(3 行记录)
IS-DOCUMENT
功能:
如果参数 XML 值是一个正确的 XML 文档,则IS DOCUMENT返回真,如果不是则返回假
用法:
xml IS DOCUMENT
示例:
test=# select (comm is document), comm ,(xmldata is document),xmldata from xmldata ;
?column? | comm | ?column? | xmldata
----------+----------+----------+-----------------------------------------------
f | zhangsan | t | <kes><sql>sql001</sql><rac>rac001</rac></kes>
f | lisi | t | <kes><sql>sql002</sql><rac>rac002</rac></kes>
f | wangwu | t | <kes><sql>sql003</sql><rac>rac003</rac></kes>
(3 行记录)
XML_IS_WELL_FORMED
功能:
检查一个text串是不是一个良构的 XML,返回一个布尔结果。
用法:
xml_is_well_formed(text)
示例:
test=# SELECT xml_is_well_formed('<abc>') , xml_is_well_formed('<abc/>');
xml_is_well_formed | xml_is_well_formed
--------------------+--------------------
f | t
(1 行记录)
XML_IS_WELL_FORMED_CONTENT
功能:
检查一个text串是不是一个良构的 XML,返回一个布尔结果。
用法:
xml_is_well_formed_content(text)
示例:
test=# SELECT xml_is_well_formed_content('<abc>') , xml_is_well_formed_content('<abc/>');
xml_is_well_formed_content | xml_is_well_formed_content
----------------------------+----------------------------
f | t
(1 行记录)
XML_IS_WELL_FORMED_DOCUMENT
功能:
检查一个text串是不是一个良构的 XML,返回一个布尔结果。
用法:
xml_is_well_formed_document(text)
示例:
test=# SELECT xml_is_well_formed_document('<abc>') , xml_is_well_formed_document('<abc/>');
xml_is_well_formed_document | xml_is_well_formed_document
-----------------------------+-----------------------------
f | t
(1 行记录)
KingbaseES 原生XML系列一 -- XML构造函数的更多相关文章
- C#编程基础->XML系列导航
缘由 最近开发的小程序过程中需要涉及到XML相关操作,突然发现自己对于这知识点了解的太少,急需学习加强.刚好项目的时间也不是很紧急,自己就总结XML相关知识点.一个方面自己学习,一个方面也希望可以帮到 ...
- XML系列之--Linq操作带属性的XML(四)
关于XML,之前解析过电文收发方面的,就是所谓的带表头.前缀(命名空间)SOAP格式.这次需求是解析一个xml的模板(xls内容),然后填充数据,最后保存.需要时可转换xls.pdf等文件.关于这种带 ...
- XML系列之--对电文格式XML的简单操作(三)
前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...
- XML系列之--创建电文格式的XML(一)
关于XML,学校那会,老师在口中仅仅提及,自己也未曾深入接触过,仅是些将最基本XML文件内容显示在web定义的表格中之类的简单操作,如今项目中的收发电文涉及到复杂XML的操作.趁此契机好好回顾下XML ...
- XML系列之--解析电文格式的XML(二)
上一节介绍了XML的结构以及如何创建.讲到了XML可作为一种简单文本存储数据,把数据存储起来,以XML的方式进行传递.当接收到XML时,必不可少的就是对其进行解析,捞取有效数据,或者将第三方数据以节点 ...
- 比較全的XML系列工具 能够轻松实现排版、转换和打印!
XML系列 --------------------------------------------------------------------------------1.Xsl Formatte ...
- OAF_文件系列6_实现OAF导出XML文件javax.xml.parsers/transformer(案例)
20150803 Created By BaoXinjian
- maven系列--settings.xml
安装maven,会有一份settings.xml文件,我们可以理解这份文件就是用来管理本地maven的一系列东西的.这里我先贴出一份完整的原始xml. <?xml version="1 ...
- Maven系列--web.xml 配置详解
一 .web.xml介绍 启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 紧接着,容 ...
- JS解析XML文件和XML字符串
JS解析XML文件 <script type='text/javascript'> loadXML = function(xmlFile){ var xmlDoc=null; //判断浏览 ...
随机推荐
- powerdesigner自定义实体显示的属性
我做概要设计的时候需要画实体的逻辑模型图,默认的时候是这样的: 但是我想只保留属性名,隐藏数据类型和下面的横线怎么办?效果如下: 按以下操作即可实现:
- 代码+案例,实战解析BeautifulSoup4
本文分享自华为云社区<从HTML到实战:深入解析BeautifulSoup4的爬虫奇妙世界>,作者:柠檬味拥抱. 网络上的信息浩如烟海,而爬虫技术正是帮助我们从中获取有用信息的重要工具.在 ...
- C++ 多线程的错误和如何避免(13)
在 async 任务中抛出的异常会被 std::future::get() 触发 #include <future> #include <iostream> int main( ...
- win32 - 创建无GUI的消息循环(包含线程窗口的说明)
创建win32窗口需要注册,回调函数一些操作,如果我们不需要窗口的话,可以使用下面代码获得一个仅有消息循环的控制台. ps: 这样做主要对一些不需要窗口但需要消息循环的程序特别有用,比如蓝牙回调. # ...
- 【Android 抓包对抗】代理检查绕过
1. 安装apk,点进去发现一点就挂 2. apk 拖入到jadx中观察,发现多出检查,一旦满足条件就会退出 .... if (((ConnectivityManager) getSystemServ ...
- 项目实战:Qt+OpenCV图像处理与识别算法平台
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- pyqt5学习示例
python代码编写pyqt5 主窗口的类型:有三种窗口 # 相关函数方法 setWindowTitle() # 设置主窗口的标题 resize() # 设置窗口的大小 statusBar() # 创 ...
- CXP协议的传输层介绍 8b/10b编码
8b/10b编码与K码 upconnection 和downconnection均使用8b/10b编码,因此我们先简单回顾一下8b/10b吧 8B/10B编码被广泛应用到高速串行总线,如IEEE139 ...
- 关于mv命令,系统是如何区分是移动还是重命名
引入: 精简回答版:重命名的本质仍是移动覆盖 ,所以不存在应该如何区分的问题 最近学习到linux基础命令中的mv命令,了解到mv命令的作用是对文件的移动和重命名,但自己一直想不明白系统是如何分辨 ...
- Java 多态 解释+案例
1 package com.bytezreo.duotai; 2 /** 3 * 4 * @Description 面向对象的特征三 ------多态性 5 * @author Bytezero·zh ...