MySQL中XML数据的XPath支持

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

今天我要为大家介绍的是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)

标签:mysql,xml,xpath,数据
0
投稿

猜你喜欢

  • 编写数据库asp程序需注意的问题

    2007-12-29 12:57:00
  • 随感:交互设计两三事

    2009-05-18 13:54:00
  • ASP和MYSQL开发网站的注意事项

    2009-08-21 13:23:00
  • Oracle 自增(auto increment) 或 标识字段的建立方法

    2009-03-06 11:15:00
  • Recipe: 把SQL数据库部署到远程主机环境(第一部分)

    2007-09-23 13:07:00
  • Mootools 1.2教程(11)——Fx.Morph、Fx选项和Fx事件

    2008-12-04 16:03:00
  • 我的javascript小扎

    2008-08-12 13:04:00
  • SQL Server 查询分析器快捷键集合

    2007-08-17 09:42:00
  • 利用ASP从远程服务器上接收XML数据

    2007-08-23 12:49:00
  • SQL学习笔记八 索引,表连接,子查询,ROW_NUMBER

    2011-09-30 11:18:24
  • 某一公司的ASP面试题

    2011-09-15 20:50:20
  • 添加到各大流行网摘 书签的代码

    2008-04-20 14:15:00
  • 从 msxml6.dll 中获取 DOMDocument 对象的方法与属性

    2009-02-22 18:46:00
  • ASP CacheControl 属性

    2009-04-28 13:09:00
  • ASP连接MySQL数据库代码示例

    2010-03-14 11:24:00
  • 页面重构应注意的repaint和reflow

    2011-03-31 17:11:00
  • 一个asp分页源代码例子

    2007-09-19 12:25:00
  • 禁用JavaScript脚本来复制网站内容

    2007-02-03 11:30:00
  • 傲游对开发人员的影响越来越大了

    2009-10-14 13:16:00
  • ASP充分利用Err.Description

    2009-06-24 11:12:00
  • asp之家 网络编程 m.aspxhome.com