MySQL中的ExtractData是否支持名称空间?

时间:2011-08-22 23:10:06

标签: mysql xml xpath

我有一个非常大的xml文件,我存储在一个名为xml的longtext字段中,名为imports。

然后我将今天的xml字符串存储在一个名为@xml的用户变量中,就像这样。

SELECT xml FROM imports WHERE DATE(updated_at) = DATE(NOW()) INTO @xml;

我可以测试用户变量,并且数据的长度符合预期。

SELECT LENGTH(@xml);

测试目标xml标记的位置也可以按预期工作。

SELECT LOCATE('sm:ProductCode>', @xml);

但是,当我尝试将ExtractValue与包含命名空间的XPath查询一起使用时,我得到null。这个XPath查询经过测试,在我的XPath探索软件中运行良好。

SELECT ExtractValue(@xml, '//sm:ProductCode');

1 个答案:

答案 0 :(得分:1)

从5.1.10开始支持:

  

从MySQL 5.1.10开始,作为参数传递给ExtractValue()和UpdateXML()的XPath表达式可能在元素选择器中包含冒号字符(“:”),这使得它们可以使用带有XML命名空间符号的标记。

如果您的版本较旧,那么您无法做任何事情,您可以将其用作解决方法的XPath namespace-uri()功能不受支持。