如何在MySQL数据库中使用XML数据(2)
来源:asp之家 发布时间:2009-12-29 10:48:00
使用Load_File()函数导入XML数据
MySQL 5.1.5包括了两个新的函数:ExtractValue()和UpdateXML()。
ExtractValue():使用XPath符号从XML字符串提取值。
UpdateXML():返回一个替代的XML片段。
MySQL中导入XML数据最常用的方法是使用LOAD_FILE()函数打开一个完整的XML文档,将其存储在一个变量中,然后将变量插入到一个表列中。这里还是以client_citizenship表为例进行说明,但这一次它只包括两个字段:一个自增长的ID和一个xml_data列(就是由它存储XML文档),TEXT数据类型非常适合用在这个列上,因为它可以容纳非常长的字符串。
CREATE TEMPORARY TABLE client_citizenship (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
xml_data TEXT NOT NULL
);
SET @xml = LOAD_FILE("c:\client_citizenships.xml");
INSERT INTO client_citizenship VALUES (NULL, @xml);
现在我们可以使用ExtractValue()函数从xml_data字段检索变量了,ExtractValue()函数有两个参数,第一个是被检查的XML片段,第二个是XPath表达式。XPath是一门专门设计用于查询XML文档中节点信息的语言,在www.w3.org网站有完整的XPath介绍。XPath参数在元素选择器中可以包括冒号“:”,以支持命名空间。检索数据包括两步,首先从client_citizenship表获得XML,然后将其放进变量。
SELECT xml_data FROM client_citizenship LIMIT 1 INTO @xml;
现在我们使用ExtractValue()函数,@xml作为第一个参数,XPath字符串作为第二个参数进行查询:
SELECT ExtractValue(@xml, '//row[2]/field[1]/@name'),
ExtractValue(@xml, '//row[2]/field[1]');
在前一个ExtractValue()调用中,XPath表达式检索第二个中的第一个元素的name属性的值,如果你再次调用,name属性会包含列头;第二个XPath表达式提取文本节点,当然包括字段的值了。
...
</row>
<row> (row[2])
<field name="client_id">2</field> (field[1])
<field name="date_of_birth">1944-01-15</field>
...
下面显示的是上面的查询格式化输出结果:
+----------------------------------------------+----------------------------------------+
|ExtractValue(@xml, "//row[2]/field[1]/@name") |ExtractValue(@xml, '//row[2]/field[1]') |
+----------------------------------------------+----------------------------------------+
|client_id |2 |
+----------------------------------------------+----------------------------------------+
在下一篇文章中,我们将看到一种更好的格式化结果集的方法,以便列标题可以更好地展示。此外,我将会扩展上面的例子,使用存储过程检索整个XML文档,最后还将看到UpdateXML()函数的使用介绍。


猜你喜欢
- 前提搭建钉钉应答机器人,需要先准备或拥有以下权限:钉钉企业的管理员或子管理员(如果不是企业管理员,可以自己创建一个企业,很方便的)有公网通信
- webpack的loaders是一大特色,也是很重要的一部分。这遍博客我将分类讲解一些常用的laoder一、loaders之 预处理css-
- 命令行执行Python脚本的传参应用场景在对ABAQUS进行二次开发时,需要将核心脚本的外部数据传递到脚本内部并执行核心脚本在运行时,可以调
- 刚刚想从数据库中的表EXPERT_DETAILS中检索出修改人Modifier(类型 VARCHAR2(20),可为空)为空的那些记录,因为
- ExtJS可以用来开发RIA也即富客户端的AJAX应用,是一个用javascript写 的,主要用于创建前端用户界面,是一个与后台技术无关的
- 第一种方法:这个是删除单字段图片的代码。比较简单,因为图片字段已经预先存在数据库表的bookpic的字段里面了。 代码如下: <!-
- 导语也许是为了和音,在立冬这一天的人间里北方多个城市,悄然降下冬天的第一场初雪,组成了一段旋律💨一天过两季,黄叶转飞花——从天而降落,昼夜不
- 核心代码是:browser.execute_cdp_cmd('Network.setUserAgentOverride',
- 目录一、前言二、使用1.@Component2.compued、data、methods3.@props4.@watch5.@emit三 、
- 写一个学生管理系统,最好用python。我都没学过python呢,只好开始临时抱佛脚,再到网上找找有没有例子看看,下面是我参照另一个博主写的
- 问题在使用matplotlib作图的时候,有的时候会遇到画图时坐标轴重叠,显示不全和图片保存时不完整的问题。如下:解决方案画图时重叠或者显示
- PostMessage()def keyHwnd(hwndEx, char): """  
- Pygame的Event事件模块事件(Event)是 Pygame 的重要模块之一,它是构建整个游戏程序的核心,比如常用的鼠标点击、键盘敲击
- 我们在前面的几节中分别讲了提高网站性能中内容、服务器、JavaScript和CSS等方面的内容。除此之外,图片和Coockie也是我们网站中
- DataFrame筛选数据与loc用法python中pandas下的DataFrame是一个很不错的数据结构,附带了许多操作、运算、统计等功
- 一、php中pcntl_fork函数概述pcntl_fork()函数是php中用于创建子进程的一个函数,返回创建的子进程的pid。该函数创建
- 本文为大家分享了pygame游戏之旅的第7篇,供大家参考,具体内容如下对car和障碍的宽高进行比较然后打印即可:if y < thin
- 深度遍历:原则:从上到下,从左到右逻辑(本质用递归):1)、找根节点2)、找根节点的左边3)、找根节点的右边class Node(objec
- 这段时间,关于asp的前途,关于asp的好坏的讨论贴,都有好些了。当然,大家的心都是好的,但是一些朋友说的话,真是让人郁闷。个人觉得,在现在
- 使用python + shell 编写,是一个简易solaris系统巡检程序#!/usr/bin/python -u#-*- coding: