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函数列表

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构造函数的更多相关文章

  1. C#编程基础->XML系列导航

    缘由 最近开发的小程序过程中需要涉及到XML相关操作,突然发现自己对于这知识点了解的太少,急需学习加强.刚好项目的时间也不是很紧急,自己就总结XML相关知识点.一个方面自己学习,一个方面也希望可以帮到 ...

  2. XML系列之--Linq操作带属性的XML(四)

    关于XML,之前解析过电文收发方面的,就是所谓的带表头.前缀(命名空间)SOAP格式.这次需求是解析一个xml的模板(xls内容),然后填充数据,最后保存.需要时可转换xls.pdf等文件.关于这种带 ...

  3. XML系列之--对电文格式XML的简单操作(三)

    前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...

  4. XML系列之--创建电文格式的XML(一)

    关于XML,学校那会,老师在口中仅仅提及,自己也未曾深入接触过,仅是些将最基本XML文件内容显示在web定义的表格中之类的简单操作,如今项目中的收发电文涉及到复杂XML的操作.趁此契机好好回顾下XML ...

  5. XML系列之--解析电文格式的XML(二)

    上一节介绍了XML的结构以及如何创建.讲到了XML可作为一种简单文本存储数据,把数据存储起来,以XML的方式进行传递.当接收到XML时,必不可少的就是对其进行解析,捞取有效数据,或者将第三方数据以节点 ...

  6. 比較全的XML系列工具 能够轻松实现排版、转换和打印!

    XML系列 --------------------------------------------------------------------------------1.Xsl Formatte ...

  7. OAF_文件系列6_实现OAF导出XML文件javax.xml.parsers/transformer(案例)

    20150803 Created By BaoXinjian

  8. maven系列--settings.xml

    安装maven,会有一份settings.xml文件,我们可以理解这份文件就是用来管理本地maven的一系列东西的.这里我先贴出一份完整的原始xml. <?xml version="1 ...

  9. Maven系列--web.xml 配置详解

    一 .web.xml介绍 启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 紧接着,容 ...

  10. JS解析XML文件和XML字符串

    JS解析XML文件 <script type='text/javascript'> loadXML = function(xmlFile){ var xmlDoc=null; //判断浏览 ...

随机推荐

  1. logback日志组件使用案例

    关于logback: http://www.cnblogs.com/warking/p/5710303.html 官方文档 使用logback: idea创建maven项目 修改pom.xml添加依赖 ...

  2. Java I/O 教程(八) Writer和Reader

    Java Writer Writer是一个用于写字符流的抽象类.其子类必须实现write(char[], int, int), flush(), 和 close()方法. 类定义 public abs ...

  3. Java并发编程实例--10.使用线程组

    并发API提供的一个有趣功能是可以将多个线程组成一个组. 这样我们就能将这一组线程看做一个单元并且提供改组内线程对象的读取操作.例如 你有一些线程在执行同样的任务并且你想控制他们,不考虑有多少个线程仍 ...

  4. SpringBoot整合Swagger2实现接口文档

    展示一下 访问方式一 访问地址:http://localhost:8080/swagger-ui.html#/ 首页 详情页 访问方式二 访问地址:http://localhost:8080/doc. ...

  5. win32 - Shell菜单项的创建

    #include <windows.h> #include <shobjidl_core.h> #include <windowsx.h> #include < ...

  6. kubebuilder

    https://book.kubebuilder.io/quick-start crd+operator 定义了CRD之后,下一步就是需要一个像Deployment Controller Manage ...

  7. File.delete()和Files.delete(Path path)的区别

    文件删除时可以选择File.delete()和Files.delete(Path path),这两个方法到底有什么区别呢? //删除暂存的pdfFile file =new File(pdfFilen ...

  8. 【LeetCode剑指offer#05】回文链表的两种解法+删除链表中间节点(链表的基本操作)

    回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表.如果是,返回 true :否则,返回 false . 示例 1: 输入:head = [1,2,2,1] 输出:true 示 ...

  9. 第121篇: DOM常用类型(Document、Element)

    好家伙,本篇为<JS高级程序设计>第十四章"DOM编程"学习笔记   1.Document类型 Document 类型是 JavaScript 中表示文档节点的类型. ...

  10. Redis哨兵(sentinel)

    目录 前言 原理 架构图 下载 命令 配置 启动 查看 Sentinel(哨兵)配置 常用命令 Q&A Redis主从配置异常解决:Error condition on socket for ...