2015-02-10 44 views
0

我想使用SQL Server的XML.modify對XML文檔進行修改。我的問題是我的XML文檔使用一些轉義XML,所以「<」顯示爲「<」,「>」顯示爲「>」。我想知道是否可以設置被轉義XML包圍的元素的值。什麼我處理的下面是一個例子:在帶有轉義xml的xm文檔上使用SQL Server xml.modify

Declare @myDoc as xml; 
Set @myDoc = '<Root>  
       <ProductDescription ProductID="1" ProductName="Road Bike">  
        <Features> 
         <BikeLight>False</BikeLight> 
         &lt;BikeHorn&gt;True&lt;/BikeHorn&gt;  
        </Features>  
       </ProductDescription>  
      </Root>' ; 

我知道我可以通過使用

set @myDoc.modify('replace value of (/Root/ProductDescription/Features/BikeLight/text())[1] with "True"') 

而是試圖做同樣的BikeHorn只返回編輯BikeLight元素的值XML文檔,未修改。是否可以修改被轉義的XML包圍的元素的值?任何幫助將不勝感激,謝謝。另外,請注意,在我的實際代碼中,Features下的所有元素都會被轉義XML所包圍。

回答

0

問題是您沒有一個名爲<BikeHorn>的節點,您有一個複雜的節點<Features>,它除了包含<BikeLight>子節點之外,還包含一些自己的文本。所以你需要修改<Features>來改變BikeHorn的值:

set @myDoc.modify(' 
replace value of (/Root/ProductDescription/Features/text())[1] 
with "&lt;BikeHorn&gt;False&lt;/BikeHorn&gt;"') 
+0

偉大的工作完美。爲我節省了很多頭痛。 – 2015-02-10 19:25:52

+0

嗨,如果包含更多文本,那麼該怎麼辦呢?<BikeHorn> False </BikeHorn >。 如果它被格式化,如: \t <BikeHorn>真</BikeHorn > \t <ExtraSeat>真</ExtraSeat > 請問我需要包括ExtraSeat以及BikeHorn在「與「替換聲明的一部分,如果我只是想修改BikeHorn的價值? – 2015-02-10 20:02:07

+0

您正在操作文本,而不是XML。 XML是否有任何理由像原來那樣被破壞? – 2015-02-10 20:04:09

相關問題