人大金仓数据库KingbaseES XML介绍

关键字:

KingbaseES、XML类型、XML函数

1.XML类型

xml数据类型可以被用来存储XML数据。它比直接在一个text域中存储XML数据的优势在于, 它会检查输入值的结构是不是良好,并且有支持函数用于在其上执行类型安全的操作。使用这种数据类型要求在安装时用configure --with-libxml选项编译。 与其他类型类似,可以使用下面两种语法来输入XML类型的数据:

xml '<test>hello world</test>'
'<test>hello world</test>'::xml;

示例如下:

file

xml类型可以存储遵循XML标准定义的“documents”,以及“content”片段,它是通过引用XQuery 和 XPath 数据模型来定义的。 “content”片段可以有多个顶级元素或“character”节点,但“documents”只能有一个顶级元素。可以使用表达式xmlvalue IS DOCUMENT来评估一个特定的xml值是一个“documents”还是“content”片段。Xmloptions用来指定输入的数据是documents”还是“content”片段,KingbaseES默认情况下此值为“content”片段。所以输入的xml可以有多个顶级元素,但是如果把此参数值改为documents”,将不能输入多个顶级元素的内容。示例如下:

file

也可以通过xmlparse函数从字符数据中生成一个 xml 类型的值,xmlparse函数的语法为:XMLPARSE ( { DOCUMENT | CONTENT } value)。此函数的DOCUMENT和CONTENT表示XML数据的类型,示例如下:

file

此外,在 KingbaseES 中处理 XML 数据产生错误的可能性更小,并且在 XML 数据编码、客户端编码和服务器编码三者相同时效率更高。因为 XML 数据在内部是以 UTF-8 处理的,如果服务器编码也是 UTF-8 时,计算效率将会最高。

当服务器编码不是 UTF-8 时,某些 XML 相关的函数可能在非 ASCII 数据上完全无法工作。尤其在 xmltable() 和xpath() 上,这是一个已知的问题。

2.XML函数

有一组函数和类函数的表达式可以用来从SQL数据产生XML内容。它们特别适合于将查询结果格式化成XML文档以便于在客户端应用中处理。

2.1.xmlcomment

语法:xmlcomment(text) xmlcomment函数创建了一个包含XML 注释的特定文本内容的值。该文本不能包含“--”或者也不能以一个“-”结尾,这样结果的结构是一个合法的 XML 注释。如果参数为空,结果也为空。示例如下:

file

2.2.xmlconcat

语法:xmlconcat(xml[,…]) xmlconcat函数把XML值的列表拼接成XML”content”片段。忽略列表中的空值,只有当参数都为空时,结果才为空。

file

2.3.xmlelement

语法:xmlelement(name name [, xmlattributes(value [AS attname] [, ... ])] [,content, ...]) Xmlelement表达式使用给定名称、属性和内容产生一个 XML 元素。示例如下:

file

file

2.4.xmlforest

语法:xmlforest(content [AS name] [, ...]) xmlforest表达式使用给定名称和内容产生一个元素的 XML”森林”。示例如下:

    ![file](https://img-blog.csdnimg.cn/cd582725229c4ad08cd5f0d46c5157b3.png)

2.5.xmlpi

语法:xmlpi(name target [, content]) Xmlpi表达式创建一个XML处理指令。如果存在内容,内容不能包含字符序列“?>”。示例如下:

file

2.6.xmlroot

语法:xmlroot(xml, version text | no value [, standalone yes|no|no value]) xmlroot表达式修改一个 XML 值的根结点的属性。如果指定了version,它会替换根节点的version声明中的值;如果指定了一个standalone,它会替换根节点的standalone值。示例如下:

file

2.7.xmlagg

语法:xmlagg(xml) 和这里描述的其他函数不同,函数xmlagg是一个聚集函数。它将聚集函数调用的输入值串接起来,非常像xmlconcat所做的事情,除了串接是跨行发生的而不是在单一行的多个表达式上发生。示例如下:

file

3.总结

XML类型可以用于存储XML数据,使用字符串类型也可以存储XML数据,但是字符串类型不能保证存储的是合法的XML数据,通常需要应用程序来负责保证输入数据的正确性,这将增加应用开发的难度。而使用XML类型不存在这种问题,数据库会对输入数据进行检查,保证数据的合法性。 XML函数和类函数的表达式可以用来从SQL数据产生XML内容,特别适合于将查询结果格式化成XML文档以便于在客户端应用中处理。

更多信息,参见https://help.kingbase.com.cn/v8/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值