我有一个非常大的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');
答案 0 :(得分:1)
从5.1.10开始支持:
从MySQL 5.1.10开始,作为参数传递给ExtractValue()和UpdateXML()的XPath表达式可能在元素选择器中包含冒号字符(“:”),这使得它们可以使用带有XML命名空间符号的标记。
如果您的版本较旧,那么您无法做任何事情,您可以将其用作解决方法的XPath namespace-uri()
功能不受支持。