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. 解决Springboot发起https请求报错:sun.sec urity.validator.ValidatorException: PKIX path building failed

    问题描述 最近开发项目中在springboot接口中调用第三方https接口,后台日志报错: sun.sec urity.validator.ValidatorException: PKIX path ...

  2. qt基础知识总结

    qt基础知识总结 1.ctrl+r:快速运行 2.两种模式的区别: 一个是提供菜单栏的,一个不提供菜单栏 3.界面讲解 layouts:布局=水平布局+垂直布局+网格布局+表单布局 spacers:垫 ...

  3. c++STL用法总结

    一.vector的用法 vector<int> vet; 1.排序:sort(vet.begin(), vet.end()), 时间复杂度O(nlogn) 2.查找:if(find(vet ...

  4. Hi3516开发笔记(九):在QtCreator开发环境中引入海思sdk的bsp包,运行显示Qt界面

    前言   之前启动Qt界面程序失败了,是因为需要引入HiSDK的BSP中的HiMPP,并对HiMPP进行初始化设置.   在sdk中查询海思SDK头文件和库       在Qt中调用海思BSP   在 ...

  5. LibModbus库开发笔记(一):libmodbus库介绍、编译和基础工程模板

    前言   本文章讲解libmodbus.   libModbus介绍   libmodbus是一个免费软件库,可根据Modbus协议发送/接收数据.该库用C编写,并支持RTU(串行)和TCP(以太网) ...

  6. iOS日志操作与开发,你真的会重视吗

    iOS中常用日志和上报系统浅析 类CocoaLumberjack日志框架架构浅析 Crash的类型介绍和常用收集方案 常用上报技术方案对比和分析

  7. 深入解析ASP.NET Core MVC应用的模块化设计[上篇]

    ASP.NET Core MVC的"模块化"设计使我们可以构成应用的基本单元Controller定义在任意的模块(程序集)中,并在运行时动态加载和卸载.这种为"飞行中的飞 ...

  8. Java 方法的重载(overload)

    1 /* 2 * 3 * 方法的重载(overload) 4 * 1.定义:在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同 5 * 6 * "两同一不同&quo ...

  9. HW学习笔记

    栈库分离方法注意事项: 所有用户输入数据需要进行分离过滤,不能遗漏.选择安全的过滤函数 如 mysql_real_escape_string(),避免过滤不严格导致注入 SQL查询模板需要设计安全,米 ...

  10. ANDROID : NEW IDEA

    •前言 学习了 Android 开发后,小脑袋瓜中时不时会蹦跶出一些想法: 这些想法大都是我现在实现不了的,所以就需要记录一下,等学到相关知识时,在着手解决. •NEW IDEA 1 将一款 APP( ...