2013-11-22 23 views
1

我有一個更新存儲過程,它將@XML作爲輸入參數。所述XML是如下:如何在SQL Server存儲過程中處理XML輸入中的&符號?

<Root> 
    <data> 
    <FriendlyName>abc</FriendlyName> 
    <URL>http://abc.aspx?view=Approval&Business=XYZ</URL> 
    </data> 
</Root> 

當執行存儲的過程,它會引發錯誤

XML分析:行5,字符141,分號預期

據失敗,因爲的&符號,而是它預計&amp;。那麼,如何在XML解析之前用&amp;替換&

+0

如果你有一個XML參數,應該不會是到調用者,以確保它是,實際上,經過真正的XML,而不是東西,只是看起來像XML? –

+0

確實。如果產生這種情況的軟件出現這種錯誤,那麼它可能也會導致很多其他的錯誤。不要嘗試修復不良的XML,修復產生它的代碼。 –

回答

1

你真的應該修復這個XML創建的地方。你在這裏有什麼是不是有效的XML。

在SQL Server中,您可以使用replace來替換這些值。

declare @S varchar(500) 
declare @XML xml 

set @S = ' 
<Root> 
    <data> 
    <FriendlyName>abc</FriendlyName> 
    <URL>http://abc.aspx?view=Approval&Business=XYZ</URL> 
    </data> 
</Root>' 

set @XML = replace(@S, '&', '&amp;') 

select @XML 

結果:

<Root> 
    <data> 
    <FriendlyName>abc</FriendlyName> 
    <URL>http://abc.aspx?view=Approval&amp;Business=XYZ</URL> 
    </data> 
</Root> 
相關問題