2016-02-09 94 views
1

獲得對XML投Null值在解析元素「錯誤類型」獲得在解析元素

我已經保存在我的SQL數據庫列此XML用於SQL XML投Null值。

<Response> 
    <ISSuccessfulPingResponse>false</ISSuccessfulPingResponse> 
    <PingResponse> 
     <PriceResult xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://www.test.com/pasd/test.xsd"> 
      <Result>ERROR</Result> 
      <ErrorType>XML Validation</ErrorType> 
      <ErrorDescription> equal to 5.</ErrorDescription> 
      <out>0</out> 
     </PriceResult> 
    </PingResponse> 
</Response> 

我試圖運行一個SQL腳本來獲取元素「ErrorType」的值,但我收到空值。

SELECT Cast(Result as xml).value ('(/Response/PingResponse/PriceResult/ErrorType)[1]', 'varchar(100)') as result from getresults 
where Id=23 

回答

2

由於PriceResult和所有的子元素的無前綴(包括ErrorType)是在命名空間https://www.test.com/pasd/test.xsd,所以你應該能夠在這裏使用WITH XMLNAMESPACES,例如:

;WITH XMLNAMESPACES('https://www.test.com/pasd/test.xsd' as d) 
SELECT Cast(Result as xml).value (' 
    (/Response/PingResponse/d:PriceResult/d:ErrorType)[1] 
', 'varchar(100)') as result 
from getresults where Id=23 

基本上,代碼定義了使用WITH XMLNAMESPACES映射到名稱空間URI的前綴d,然後使用它(前綴d)引用命名空間中的元素。

+0

其工作@ har07 – JAB