我使用了一個相當簡單的Xpath查詢(見下文)查詢其值都遵循例子(低於)的形式的SQL Server 2008數據庫列返回NULL。對於所有行,我的查詢返回NULL
,而不是example
屬性(例如「VALUE」)的值,即使我爲查詢的每一行都定義了example
屬性。的XPath有效的XPath表達式
我試過在我的Xquery表達式中聲明xsd
和xsi
命名空間,並從多個不同的屬性名稱中進行選擇,但都沒有任何效果。我錯過了什麼?
查詢:
select ColumnName.value('(/RootNode/@example)[1]', 'nvarchar(15)') [Result]
from TableName
XML樣本節點(實際XML包含有更多的屬性,這些屬性我省略):
<RootNode xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://intranet"
example="VALUE">
<IsValid>true</IsValid>
</RootNode>
使用名稱空間,具有相同嘗試查詢結果:
select ColumnName.value('
declare namespace xsd="http://www.w3.org/2001/XMLSchema";
declare namespace xsi="http://www.w3.org/2001/XMLSchema-instance";
(/RootNode/@example)[1]', 'nvarchar(15)') [Result]
from TableName
我沒有看到你提到的查詢的命名空間。不'xsi'或'xsd',但默認設置一個,通過'http:// intranet' – 2013-04-22 18:55:08
@StenPetrov我嘗試添加的,但它並沒有區別,所以我刪除他們 – Dov 2013-04-22 18:57:55
'xsd'和'xsi'贏得」不同,默認的命名空間會。我也有麻煩也破壞你的xpath。看起來你正在尋找'IsValid'作爲具有'@ example'的'RootNode',這將是'// RootNode [@example]/IsValid' – 2013-04-22 19:02:15