没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-12-24 11:43:04.000|阅读 1765 次
概述:今天我要为大家介绍的是XPath,XPath是导航和查询XML文档的语言。我们从一个函数开始。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
今天我要为大家介绍的是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('',
-> '//city',
-> '')
-> AS xml_node;
+-----------------------------------------+
| xml_node |
+-----------------------------------------+
| |
+-----------------------------------------+
1 row in set (0.03 sec)
mysql> SELECT @new_xml_node;
+-----------------------------------------+
| @new_xml_node |
+-----------------------------------------+
| |
+-----------------------------------------+
1 row in set (0.00 sec)
如果没有发现匹配表达式的文本节点,就返回原始XML字符串。
mysql> SELECT @new_xml_node:=UpdateXML('',
-> '//dummy',
-> '')
-> AS xml_node;
+---------------------------+
| xml_node |
+---------------------------+
| |
+---------------------------+
1 row in set (0.03 sec)
如果发现有多个都匹配,会按顺序返回每个匹配的子文本节点的内容。
mysql> SELECT @new_xml_node:=UpdateXML('',
-> '//city,
-> '')
-> AS xml_node;
+----------------------------------------------+
| xml_node |
+----------------------------------------------+
| |
+----------------------------------------------+
1 row in set (0.00 sec)
因为UpdateXML()函数在匹配到空元素和没有匹配之间没有区别,要区别它们可以使用XPath count()函数测试ExtractValue()的返回。
mysql> SELECT ExtractValue('',
-> 'count(//city)') AS xml_node;
+----------+
| xml_node |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)
mysql> SELECT ExtractValue('',
-> 'count(//county)') AS xml_node;
+----------+
| xml_node |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
错误处理
对ExtractValue() 和 UpdateXML(),使用的XPath定位器必须是有效的,被搜索的XML必须是结构良好的,如果定位器无效,则会产生一个错误。
mysql> SELECT @new_xml_node:=UpdateXML('',
-> '//city/"state', '') AS xml_node;
ERROR 1105 (HY000): XPATH syntax error: '"state'
如果被搜索的XML结构不好,则会返回null,并产生一个警告。
mysql> SELECT @new_xml_node:=UpdateXML('', '//city',
-> '') AS xml_node;
+----------+
| xml_node |
+----------+
| NULL |
+----------+
1 row in set, 1 warning (0.01 sec)
可以使用show warnings命令显示警告。
mysql> show warnings;
+---------+------+-----------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------+
| Warning | 1525 | Incorrect XML value: 'parse error at line 1 pos 21: '' unexpected ('' wanted)' |
+---------+------+-----------------------------------+
1 row in set (0.01 sec)
作为第三个参数传递给UpdateXML()的替换XML则不会检查结构。
mysql> SELECT @new_xml_node:=UpdateXML('', '//city',
-> '<>') AS xml_node;
+-------------------------------------------+
| xml_node |
+-------------------------------------------+
| <> |
+-------------------------------------------+
1 row in set (0.00 sec)
在XPath表达式中使用变量
从MySQL 5.1.20开始,可以在XPath定位器参数中使用变量,这样在传递参数时就更加灵活了,根据使用的语法不同,可以对变量实施弱检查或强检查。
错误处理
对ExtractValue() 和 UpdateXML(),使用的XPath定位器必须是有效的,被搜索的XML必须是结构良好的,如果定位器无效,则会产生一个错误。
mysql> SELECT @new_xml_node:=UpdateXML('',
-> '//city/"state', '') AS xml_node;
ERROR 1105 (HY000): XPATH syntax error: '"state'
如果被搜索的XML结构不好,则会返回null,并产生一个警告。
mysql> SELECT @new_xml_node:=UpdateXML('', '//city',
-> '') AS xml_node;
+----------+
| xml_node |
+----------+
| NULL |
+----------+
1 row in set, 1 warning (0.01 sec)
可以使用show warnings命令显示警告。
mysql> show warnings;
+---------+------+--------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------+
| Warning | 1525 | Incorrect XML value: 'parse error at line 1 pos 21: '' unexpected ('' wanted)' |
+---------+------+--------------------------------------+
1 row in set (0.01 sec)
作为第三个参数传递给UpdateXML()的替换XML则不会检查结构。
mysql> SELECT @new_xml_node:=UpdateXML('', '//city',
-> '<>') AS xml_node;
+-------------------------------------------+
| xml_node |
+-------------------------------------------+
| <> |
+-------------------------------------------+
1 row in set (0.00 sec)
在XPath表达式中使用变量
从MySQL 5.1.20开始,可以在XPath定位器参数中使用变量,这样在传递参数时就更加灵活了,根据使用的语法不同,可以对变量实施弱检查或强检查。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@dpuzeg.cn
文章转载自:网络转载面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@dpuzeg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢