XML技术分析05

news2024/11/15 4:22:15

一、DOM

使用DOM扫描器程序:DOM扫描器是一种非常通用的程序,它不需知道用户定制的XML标记的确切含义。DOMAPI具有某些能把任何数据存储到树形结构中的接口。扫描器具有一组实现了这些接口的类,可以实例化这些类的对象。      

这些接口和类允许插入和卸下不同的扫描器,不会影响应用程序,也可以调用DOMAPI的主要数据类型。它提供几种方法,可以引导到子节点。其他许多接口如Document、ELement、Entity和Attr都扩展了Node。

 局限性:DOM适合处理少量及中等数据量的数据,但不适合处理非常大的数据。因为DOM处理文档时,只要一开始,必须到结束才能停止返回,对于非常大的数据,效率则比较低,当我们所需要的只不过是文件中的某些少量元素时,它却要浪费大量的时间处理整个文档。

二、SAX

SAX 扫描器:SAX与DOM工作方式有所不同,当它发现了所需要的元素时,会立即把XML元素返回给调用程序。也就是说,当SAX扫描器开始读取XML数据时,无论何时遇到给定元素的起始标记符,它将立即通知通用程序,而不需要每次都处理整个文档。遇到结束标记符也是如此。SAX扫描器与调用程序的通信方式是通过回调来实现的。又由于SAX不必在内存中建立语法树,从而节省了内存。    

 SAX扫描能够非常有效而方便地利用计算机资源,灵活地处理比较大的数据,但也有不足。与DOM扫描器相比,必须编写较多的接口代码才能调用SAX扫描器,而且一旦需要,程序员还必须增加代码以便跟踪它己经扫描到什么位置了。

三、XML查询语言XQuery

   XML Query:通常缩写为 XQuery,是一种能灵活地从 XML 文档中抽取数据的查询语

(1) 字符表达式          

字符表达式包括字符字符串和数字字符串二种,字符字符串是由所有schema中类型为xs:sting的字符组成,数字字符串是由数字0~9以及“·”“e”和“E”组成。

(2) 变量          

变量表达式为:“$变量名”,如“$book”表达变量为book,它是区分属性、节点等其他元素的标志。变量通常直接使用,既可在for语句中给变量赋值,又可在条件限定语句和函数调用时给变量赋值;若变量没有赋值,则值为error。

(3)路径

 用以确定每个节点在树中的位置。分为绝对路径和相对路径。      

绝对路径——从文档的根目录开始,直到目标的子节点或属性,之间用“//”隔开。      

相对路径——是直接从当前路径的下一级开始,然后至目标子节点或属性。路径是一个表达式,有前向和后向表达式。

四、前后向表达式

前向表达式有:

child:: 子节点名——表示当前节点的子节点,如child::book ;child::* 表示当前节点的所有子节点。

descendant:: 子孙节点名——表示当前节点的子孙节点,如descendant::book ;

attribute:: 属性名——表示当前节点的属性,如attribute::title ;

self:: 节点名——表示节点自身,如self::auther;

descendant-or-self:: 节点名——表示当前节点自身或它的子孙节点,如descendant-or-self:: auther 。

后向表达式有:

parent:: 父节点名——表示当前节点的父节点,如parent::price 。

前向、后向表达式每次运行时,都会返回一个元素,并对这个元素系列进行检查,具体有:①节点名的合法性检查。 ②节点类型检查。包括文本类型测试text()、注释类型测试comment()、节点类型测试node()、处理信息类型测试processing-instruction等。

简略写法

“child::”可以完全省略,“attribute::”可以省略为“@”,“descendant-or-self::node()/”可省为“//”,self:: node()的省略写法是“.”,parent:: node()的缩写为“..”。又,para代表当前节点的子节点,*代表当前节点的所有子节点,text()代表当前节点的所有文本类型的子节点,name代表当前节点的name属性。

五、各种类型的查询

Xquery要查找的信息可以包含在一个或多个表达式中,Xquery可以用XML表现查询结果;Xquery又可根据查询的不同,用各种不同的语句表达式,如FLWR表达式、[条件]表达式、及排序表达式等,并允许各个表达式相互嵌套。

(1) 用XML表现查询结果         Xquery可以用XML表现查询结果,即通过构造XML结构的方法,使结果表现出XML的结构方式。在查询结果中制定节点、属性、注释、处理指针及CDATA(其中的数据照原样输出)。

(2) 指出查找范围       可以用FOR语句将查找的对象限定为某个文档或节点。

(3) 限定查找条件       通过WHERE语句限定查找条件。

(4) if-then-else语句      用于需要分条件判断的情况。

(5) 对查询结果进行排序          按照需要对查询的结果进行排序,如按书名排序,按作者排序等。

六、FLWR表达式

     XQuery 中最强大的新特性是 FLWR 表达式。FLWR(发音为 flower)是 For-Let-Where-Return 的首字母缩略词,每个 FLWR 表达式都有一个或多个 for 子句、一个或多个 let 子句、一个可选的 where 子句以及一个 return 子句,这些子句都允许在这些表达式的任何一个中。    

FLWR的语句格式为:

for 变量1 in 表达式1,变量2 in 表达式2,……变量n in 表达式n 。

let 变量1:=1,变量2:=2,……

where条件

return 返回的内容

(1) for 子句        for 子句对表达式中的变量进行范围限定,若没有for 子句,则变量在当前文档的范围内。

(2) let 子句        let子句为for子句中所有的变量进行赋值,通常一个变量赋一个值或一个序列。 (3) where子句       where条件语句对变量作进一步的限制。如果特定的元组不能满足特殊条件,那么where 子句命令程序废弃这些元组。

(4) return 子句         return 子句定义每个元组要返回的内容,它指定了返回的结果及形式。Return语句可以嵌套FLWR语句。

七、XML与数据库的关系

数据库在XML应用中的角色        

XML作为数据交换的标准,更着重于统一数据格式,而不是提供数据库的特性,数据库作为数据管理的地位没有改变!

XML数据库                

XML作为数据交换的标准,更着重于统一数据格式,而不是提供数据库的特性,数据库作为数据管理的地位没有改变!

XML数据库的类型

目前XML数据库有三种类型:

(1)XMLEnabledDatabase(XEDB),即能处理XML的数据库。其特点是在原有的数据库系统上扩充对XML数据的处理功能,使之能适应XML数据存储和查询的需要。一般的做法是在数据库系统之上增加XML映射层,这可以由数据库供应商提供,也可以由第三方厂商提供。映射层管理XML数据的存储和检索,但原始的XML元数据和结构可能会丢失,而且数据检索的结果不能保证是原始的XML形式。XEDB的基本存储单位与具体的实现紧密相关。

(2)NativeXMLDatabase(NXD),即纯XML数据库。其特点是以自然的方式处理XML数据,以XML文档作为基本的逻辑存储单位,针对XML的数据存储和查询特点专门设计适用的数据模型和处理方法。

(3)HybridXMLDatabase(HXD),即混合XML数据库。根据应用的需求,可以视其为XEDB或NXD的数据库。

XML数据库的优势        

1、XML数据库能够对半结构化数据进行有效的存取和管理

2、提供对标签和路径的操作。

3、当数据本身具有层次特征时,由于XML数据格式能够清晰表达数据的层次特征,因此XML数据库便于对层次化的数据进行操作。

XML数据库的典型应用 :数据交换、 Web应用和服务、 信息集成、 内容管理、 电子商务、 电子政务。  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1365248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CAN协议层详细介绍

CAN物理层协议介绍-CSDN博客 目录 1. CAN的波特率及位同步 2. 位时序分解 3. CAN的报文种类及结构 3.1 报文的种类 3.2 数据帧的结构 3.2.1 仲裁段 3.2.2 RTR位(Remote Transmission Request Bit) 3.2.3 IDE位(Identifier Extension Bit) 3.2.3 SRR位(Substi…

K8S--安装MySQL8(单机)

原文网址:K8S--安装MySQL8(单机)-CSDN博客 简介 本文介绍K8S部署MySQL8(单机)的方法。 本文的目标 1.通过PV和PVC(hostPath方式)存储MySQL的数据 2.通过Deployment、Service部署MySQL8&…

【AI视野·今日NLP 自然语言处理论文速览 第七十期】Thu, 4 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Thu, 4 Jan 2024 Totally 29 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Multilingual Instruction Tuning With Just a Pinch of Multilinguality Authors Uri Shaham, Jonathan Herzi…

新手练习项目 5:简易计算器(C++)

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder) 目录 一、效果图二、代码(带注释)三、说明 一、效果图 二、代码(带…

SPON世邦 IP网络对讲广播系统 多处文件上传漏洞复现

0x01 产品简介 SPON世邦IP网络对讲广播系统是一种先进的通信解决方案,旨在提供高效的网络对讲和广播功能。 0x02 漏洞概述 SPON世邦IP网络对讲广播系统 addscenedata.php、uploadjson.php、my_parser.php等接口处存在任意文件上传漏洞,未经身份验证的攻击者可利用此漏洞上…

尚硅谷大数据技术-数据湖Hudi视频教程-笔记01【概述、编译安装】

大数据新风口:Hudi数据湖(尚硅谷&Apache Hudi联合出品) B站直达:https://www.bilibili.com/video/BV1ue4y1i7na 尚硅谷数据湖Hudi视频教程百度网盘:https://pan.baidu.com/s/1NkPku5Pp-l0gfgoo63hR-Q?pwdyyds阿里…

flutter中枚举的使用

Dart 2.17 增加了对枚举成员变量的支持,推荐使用方式三 使用dart工具来运行代码,工具:https://dartpad.cn //方式一:未支持扩展枚举时 enum InOutOrderStatusEnum {approval,completed,cancel,rejected;int get statusCode {sw…

【C++】- 类和对象(构造函数!析构函数!拷贝构造函数!详解)

类和对象② 类的6个默认成员函数构造函数析构函数拷贝构造函数 类的6个默认成员函数 上一篇详细介绍了类。如果一个类中什么成员都没有,简称为空类。 那么空类中真的什么都没有吗? 并不是,当类在什么都不写时,编译器会自动生成…

126基于matlab的孪生支持向量机(Twin support vector machine,TWSVM)是SVM的一种变形算法

基于matlab的孪生支持向量机(Twin support vector machine,TWSVM)是SVM的一种变形算法。该采用WSVM进行二分类,程序已注释数据可更换自己的,程序已调通,可直接运行。 126matlabTWSVM模式识别 (xiaohongshu.com)

【AI视野·今日Robot 机器人论文速览 第七十期】Thu, 4 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Thu, 4 Jan 2024 Totally 17 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Many-Objective-Optimized Semi-Automated Robotic Disassembly Sequences Authors Takuya Kiyokawa, Kensuke Harada, Weiwei …

python 文件

open """ def open(file: FileDescriptorOrPath, //路径mode: OpenTextMode "r", //设置打开文件的模式 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 w 打开一个文件只用写入。如果该文件已存在则打开文件&#…

【项目管理】CMMI-风险与机会管理过程

1、文档结构 2、风险与机会概率 风险与机会概率指的是风险与机会实际发生的可能性。可以用自然语言术语来映射数字概率范围。下表列出了七段概率分级中自然语言术语和数字概率范围映射关系。注意,用来计算的概率值等于概率范围的中间值取整。有了映射表格的帮助&am…

w18认证崩溃之暴力破解4种攻击模式

一、实验环境 攻击工具:burpsuite2021.12 靶场:DVWA二、实验目的 演示burpsuite的4种攻击方式 三、实验步骤 1.搭建靶场,将dvwa的网站进行发布,本文采用phpstudy管理网站 2.在DVWA Security里设置安全级别,本文从low…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)Buffer的创建和销毁、扩容、写入数据

TcpConnection:封装的就是建立连接之后得到的用于通信的文件描述符,然后基于这个文件描述符,在发送数据的时候,需要把数据先写入到一块内存里边,然后再把这块内存里边的数据发送给客户端,除了发送数据,剩下…

Stable Diffusion好用的显卡推荐

Stable Diffusion 是一款顶级的人工智能艺术生成工具,以其快速的性能、用户友好的界面和显着的效果而闻名。然而,在沉浸体验之前,有必要验证您的计算机(显卡)是否符合最佳功能所需的严格规范。今天我们将介绍三款高性价…

Ubuntu22.04开机左上角下划线闪烁不开机

按下CtrlAltF2,打开TTY系统,然后通过用户名和密码登录,随后使用 sudo apt --fix-broken install 根据提示排除错误信息,然后使用apt安装lightdm安装就行。 tips:当使用EasyConnect的时候,你可能参考了下面这篇文章知…

基础数据结构第八期 并查集

前言 并查集这部分还是挺重要的,应该要熟练掌握哦!!! 一、并查集的基本概念 作用: 1、将两个集合合并 2、查询是否在一个集合内 基本原理: 每个集合用一棵树来表示,树根的编号就是整个集合…

Pixi.js的魅力

摘要:官网 Web开发的时代,图形和动画已经成为了吸引用户注意力的重要手段之一。而 Pixi.js 作为一款高效、易用的2D渲染引擎,已经成为了许多开发者的首选~~ 项目中,有一些图像的处理操作(3D图,2D图都有&…

时序预测 | Matlab基于CNN-LSTM-SAM卷积神经网络-长短期记忆网络结合空间注意力机制的时间序列预测(多指标评价)

时序预测 | Matlab基于CNN-LSTM-SAM卷积神经网络-长短期记忆网络结合空间注意力机制的时间序列预测(多指标评价) 目录 时序预测 | Matlab基于CNN-LSTM-SAM卷积神经网络-长短期记忆网络结合空间注意力机制的时间序列预测(多指标评价)预测效果基本介绍程序设计参考资料 预测效果 …