人大金仓数据库管理系统KingbaseES---XML文档学习

本文介绍了KingbaseES在处理XML格式数据时的角色,重点讲解了XPath语言,包括节点类型、XPath表达式、语法结构、节点关系和XPath轴,强调了XML在数据库存储中的重要性以及XPath在数据检索中的应用。
摘要由CSDN通过智能技术生成

关键字:

Kingbase ES、XML、XPath、人大金仓

概述

在目前的KingBaseES研发过程中,我们会遇到数据库中存储XML格式的数据,XML文档的格式类似于HTML格式,XML是一种扩展标记语言,最早于1998年被引入软件工业界,它不仅可以在WEB前端使用还可以应用于后端数据处理以及数据库存储等。

那么什么是XML,如何解析XML格式,那么接下来将主要从XML的查找信息语言XPath来进行介绍。

XPath

XPath的全称为(XML Path Language)即XML路径语言,它是一门在XML文档中查找信息的语言,XPath可以用来在XML文档中对元素和属性进行遍历。XPath是XSLT中标准的主要元素,并且XQuery与XPointer都构建与XPath表达式之上。XPath于1999年11月16日成为了W3C的标准。

XPath路径表达式:使用路径表达式来选取XML文档中的节点或者节点集,这些路径表达式和我们在常规电脑文件中看到的表达式非常相似。XPath的标准内建函数用于字符串值、数值、日期和时间的比较、节点和QName的处理、序列处理、逻辑值等等...

2.1 XPath节点

在XPath中共有七个类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(根节点)(XML文档是被作为节点树来对待的,树的根被称为文档节点或者根节点),下面提供了一个XML实例,通过这个实例,我们引出XPath节点定义具体表达。

            <?xml version="1.0" encoding = "ISO-8859-1"?>

            <bookstore>

            <book>

                <title lang="en">Harry Potter</title>

                <author>JK. Rowling</author>

                <year>2005</year>

                <price>29.99</price>

            </book>

            </bookstore>

在上述实例中:bookstore属于文档节点,author属于元素节点,lang=“en”属于属性节点。基本值(原子值:Atomic value):基本值是无父或无子的节点。在上述实例中如:JK. Rowling ,"en"。项目(Item):项目是基本值或者节点

节点关系:在XML文档中,每个节点之间有着如家庭关系般的属性联系,因此在XML文档中一般利用父子之间的关系来代替,其中它们的定义为:

  • 父:每个元素以及属性都有一个父,在上述的实例中,book元素是title、author、year以及price这些子元素的父。
  • 子:元素节点可以有零个、一个或者多个,在上述实例中,title、author、year以及price这些子元素都是book元素的子。
  • 同胞:拥有相同的父节点,在上述的实例中,title、author、year以及price这些元素之间都是同胞。
  • 先辈:某节点的父、父的父等,在上述实例中title元素的先辈是book元素以及bookstore元素。
  • 后代:某个节点的子、子的子等,在上面实例中bookstore元素的后代是book,title,author,year以及price元素。

2.2 XPath语法

在介绍了节点的基本信息后,接下来介绍XPath表达式的语法结构,XPath使用路径表达式来选取XML文档中的节点或者节点集,节点使用过沿着路径(path)或者步(steps)来选取的。下面提供了一个XML实例,通过这个实例,我们引出XPath语法结构定义具体表达。

            <?xml version="1.0" encoding = "ISO-8859-1"?>

            <booksrore>

            <book>

                <title lang="eng">Harry Potter</title>

                <price>29.99</price>

            </book>

            <book>

                <title lang="CN">代码大全</title>

                <price>39.95</price>

            </book>

            </bookstore>

那么有效的路径表达式就如下所示:

表达式

描述

nodename

选取此节点的所有节点

/

从根节点匹配

//

从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置

.

选取当前节点

..

选取当前节点的父节点

@

选取属性

那么下面是一些语法结构的实例展示:

            bookstore   :  选取boolstore元素的所有子节点

            /bookstore  :   选取根元素bookstore。

         bookstore/book :   选取属于bookstore的子元素的所有book元素

            //book       :  选择所有book子元素,而不管它们在文档中的位置

bookstore//book :   选择属于bookstore元素的后代中所有的book元素,而不管它们在bookstore之下的什么位置

            //@lang     :   选取名为lang的所有属性

为了可以更好的寻找到查找值,XPath中加入谓语表达式,谓语是用来查找某个特定的节点或者包含某个指定的值的节点,谓语被嵌入方括号中。下面是一些实例展示

/bookstore/book[1]    :   选取属于bookstore子元素的第一个book元素

/bookstore/book[last()]  :   选取属于bookstore子元素的最后一个book元素

/bookstore/book[last()-1] :  选取属于bookstore子元素的倒数第二个book元素

/bookstore/book[position()<3]:选择最前面的链各个属于bookestore元素的子元素的book元素。

//title[@lang] :   选择所有拥有名为lang属性的title元素

//title[@lang=‘eng’]:选取所有title元素,且这些元素拥有名为eng的lang属性

/bookstore/book[price>35.00]: 选取bookstore元素的所有book元素,且其中的price元素的值需要大于35.00

/bookstore/book[price>35.00]/title: 选取bookstore元素中的book元素的所有title元素,且其中的price元素的值必须大于35.00.

在掌握这些后还有一些通配符如(*:匹配任何元素节点),(@*:匹配任何属性节点),(node():匹配任何类型节点)。

2.3 XPath轴

这是XPath中独有的节点集,利用轴可以定于相对于当前节点的节点集,从而简化搜索复杂度,使得我们可以更好更快的获得XML数据类型。

-----------------------------------------------------------------------

                轴名称         |       结果  

-----------------------------+-----------------------------------------

ancestor           |   选取当前节点的所有先辈(父,祖父等)。

ancestor-or-self |   选取当前节点的所有先辈(父,祖父等)以及当前节点本身。

attribute         |   选取当前节点的所有属性

child               |   选取当前节点的所有子元素

descendant           |   选取当前节点的所有后代元素(子,孙等)。

descendant-or-self   |   选取当前节点的所有后代元素(子,孙等)以及当前节点本身。

following           |   选取文档中当前节点的结束标签之后的所有节点。

namespace           |   选取当前节点的所有命名空间节点。

parent               |   选取当前节点的父节点。

preceding           |   选取文档中当前节点的开始标签之间的所有节点。

preceding-sibling   |   选取当前节点之前的所有同级节点

self                 |   选取当前节点

-----------------------------------------------------------------------

配合轴的使用,我们就可以很好的写出一个XML文档的搜索表达式:

位置路径表达式:位置路径是绝对的,也可是相对的。绝对路径其使用正斜杠(/),而相对路径不会这样,在两种情况中,位置路径均包括一个或多个步,每个步都被斜杠所分隔:

绝对位置路径: /step/step/...

相对位置路径: step/step/....

每个步均根据当前节点集之中的节点进行计算。步包括:轴:定义所选节点与当前节点之间的树关系,节点测试:识别某个轴内部的节点,零个或者更多谓语:更深入地提炼所选的节点集。

步的语法: 轴名称::节点测试[谓语]

总结

XML文档作为数据库中常见的数据类型,KingbaseES对XML文档具备良好的处理体系,可以很好的完成XML文档的各项需求,XPath也是该处理体系中的一环XML是数据库存储结构的重要组成部分,在了解KingBaseES数据库管理系统的过程中,为了更好的对XML数据类型进行扩展,XML基础知识的学习是必不可少的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值