网络编程
位置:首页>> 网络编程>> 数据库>> MySQL中XML数据的XPath支持

MySQL中XML数据的XPath支持

 来源:asp之家 发布时间:2009-12-15 21:57:00 

标签:mysql,xml,xpath,数据

今天我要为大家介绍的是XPath,XPath是导航和查询XML文档的语言。我们从一个函数开始。

UpdateXML()函数

我们已经花了很多时间介绍ExtractValue()函数,但还没有介绍MySQL的其它XML函数,如UpdateXML(),因为我们先前主要将内容放在将XML文档中的数据导入到MySQL数据库中了,UpdateXML()是一个使用不同的XML标记匹配和替换XML块的函数。

ExtractValue()有两个字符串参数,一个XML标记,一个XPath表达式。

ExtractValue(xml_frag, xpath_expr)

它返回第一个匹配XPath表达式的文本节点。假设你想将“”变为“”,并将结果保存到一个变量中,下面是使用UpdateXML()函数实现这个目标的做法:

mysql> SELECT @new_xml_node:=UpdateXML('<state><city/></state>',

-> '//city',

-> '<county><city/></county>')

-> AS xml_node;

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

| xml_node |

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

| <state><county><city/></county></state> |

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

1 row in set (0.03 sec)

mysql> SELECT @new_xml_node;

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

| @new_xml_node |

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

| <state><county><city/></county></state> |

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

1 row in set (0.00 sec)

如果没有发现匹配表达式的文本节点,就返回原始XML字符串。

mysql> SELECT @new_xml_node:=UpdateXML('<state><city/></state>',

-> '//dummy',

-> '<county><city/></county>')

-> AS xml_node;

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

| xml_node |

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

| <state><city/></state> |

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

1 row in set (0.03 sec)

如果发现有多个都匹配,会按顺序返回每个匹配的子文本节点的内容。

mysql> SELECT @new_xml_node:=UpdateXML('<state><city/></state><state><city/></state><state><city/></state>',

-> '//city,

-> '<county><city/></county>')

-> AS xml_node;

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

| xml_node |

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

| <state><city/></state><state><city/></state><state><city/></state> |

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

1 row in set (0.00 sec)

因为UpdateXML()函数在匹配到空元素和没有匹配之间没有区别,要区别它们可以使用XPath count()函数测试ExtractValue()的返回。

mysql> SELECT ExtractValue('<state><city/></state><state><city/></state><state><city/></state>',

-> 'count(//city)') AS xml_node;

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

| xml_node |

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

| 3 |

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

1 row in set (0.00 sec)

mysql> SELECT ExtractValue('<state><city/></state><state><city/></state><state><city/></state>',

-> 'count(//county)') AS xml_node;

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

| xml_node |

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

| 0 |

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

1 row in set (0.00 sec)

0
投稿

猜你喜欢

  • 用过jQuery的朋友一定对jQuery中方法的链式调用印象深刻,最近发布的YUI3也支持了方法的链式调用。这是一个非常不错的语法特性,能让
  • 随着手机用户的不断增加,WAP站点如雨后春笋迅速的滋长开来,手机邮箱也不断的出现在人的眼前,笔者也曾经开发了一套手机邮箱的系统,但由于时间仓
  • 在用wordpress这个博客的时候,我很奇怪的发现,最近写的内容排在第一页,而最早写的成了最后页。这显然有悖逻辑,正常的情况应该是最早写的
  • SQL Server 2008已经发布,我们可以看到它在各方面都有了显著的进步,这些让人侧目之处和失望之处都有可能极大地影响大型企业的采购意
  • 在最近一次项目有一个需求,点击按钮——异步提交——异步响应返回——根据响应返回值新开窗口。这有两个要点:异步响应之前不知道要打开窗口的URL
  • 在我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验、净化和转换时,将会面临很大
  • 在一行内声明CSS,对比下面两个:h2 {font-size:18px; border:1px solid&n
  • 代码如下:Function getCurrentUrl() On Error Resume Next Dim strTemp If LCas
  • 在认识ImageMagick之前,我使用的图像浏览软件是KuickShow,截图软件是KSnapShot,这两款软件都是KDE附带的软件,用
  • 由于asp中是使用双引号作为字符串的开始和结束标志的,单一个字符串中的双引号出现次数大于两个时,程序就有可能运行错误。asp中是怎么输出引号
  • 在浏览几个网页时,发现有几个网站在显示时间时存在问题,比如今天是2009年1月4日,但是有的网站上却赫然写着今天是109年1月4日(这里有个
  • 网页设计是由很多个不同的元素构成的,而这些元素的重要性都不同,并且有些元素还需要尤为的突出.有些元素彼此之间存在着联系,而另外的元素之间则一
  • 众所周知IE6不支持position:fixed,这个bug与IE6的双倍margin和不支持PNG透明等bug一样臭名昭著。前些天我做自己
  • 代码如下:declare @Q_ID uniqueidentifier set @Q_ID = dbo.uf_GetParamValueBy
  • QueryCache(下面简称QC)是根据SQL语句来cache的。一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使
  • 数据库安全性问题一直是围绕着数据库管理员的恶梦,数据库数据的丢失以及数据库被非法用户的侵入使得数据库管理员身心疲惫不堪。围绕数据库的安全性问
  • 前两天在做一个站内版的企搜引擎,发现某些站点可以链接站点内容。。奇怪之下看了看,原来是按照数据库ID的自动编号规律进行链接的~~闲暇之余弄了
  •   asp之日期和时间函数示例可以使用日期和时间函数来得到各种格式的日期和时间函数语法说明示例NowNow()取得系统当前的日期和
  • 问题:SQL Server 2000中设计表时如何得到自动编号字段?解答:具体步骤如下:①像Access中的自动编号字段右键你的表-->
  • 如何修改NT的登录密码?    代码见下:<%Sub ChangeUserPassword(C
手机版 网络编程 asp之家 www.aspxhome.com