2011-08-22 68 views
1

我有一個非常大的xml文件,我將它存儲在名爲xml的longtext字段中,名爲imports。MySQL中的ExtractData支持名稱空間嗎?

然後,我將如今的xml字符串存儲在名爲@xml的用戶變量中。

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

我可以根據預期測試用戶變量和數據的長度。

SELECT LENGTH(@xml); 

測試我的目標xml標籤的位置也按預期工作。

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

但是,當我嘗試對包含名稱空間的XPath查詢使用ExtractValue時,我得到空值。這個XPath查詢已經過測試,可以在我的XPath探索軟件中正常工作。

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

回答

1

它被支撐爲5.1.10:

與MySQL 5.1.10開始,)作爲參數傳遞給對extractValue()和如updateXML(XPath表達式可以包含冒號(「: 「)在元素選擇器中,這使得它們可以與使用XML名稱空間標記的標記一起使用。

如果您的版本較舊,則無法執行任何操作,XPath namespace-uri()函數可用作解決方法,但不受支持。

+0

對不起,我應該提到我使用的是5.1.41,我也在5.5.14上測試過 我讀到了關於:字符的支持,但是有很少的文檔可用,我想也許我正在點擊此功能的限制。 有沒有辦法告訴MySQL包含在@xml中的數據是xml?所有字符串函數都可以正常工作,但XPath只返回null。 –

相關問題