2017-08-28 100 views
0

我有以下sql代碼來生成一個xml塊。刪除xml屬性的錯誤代碼 - MS SQL對於xml(_x003D)

SELECT top 1 
'http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0' AS [xmlns], 
(SELECT top 1 
count(*)AS 'number-of-accounts', 
-- 
-- TO DO 
-- 
FOR XML PATH('payment-import-header'), TYPE), 
FOR XML RAW ('consumer-payment-import-job'); 

的產出影響是這樣的: enter image description here

我怎樣才能從屬性名稱去掉 「_x003D」 的?如果我插入「=」或「@」,它會添加另一個隨機值。我假設這些是錯誤標籤。

感謝

+0

嘗試此:https://docs.microsoft.com/en-us/sql/relational-databases/xml/add-namespaces- to-queries-with-with-xmlnamespaces – Alex

回答

1

您添加使用WITH XMLNAMESPACES第一個默認的命名空間,與DEFAULT關鍵字。

實施例:

WITH XMLNAMESPACES(DEFAULT 'http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0') 
SELECT 1 
FOR XML PATH('consumer-payment-import-job'); 

隨着結果

<consumer-payment-import-job xmlns="http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0">1</consumer-payment-import-job> 
+0

感謝您的迴應,這將爲所有元素創建一個屬性,我只希望它爲consumer-payment-import-job。 –

+0

@aridi令人遺憾的是,如果在查詢中有多個FOR XML條款,則沒有簡單的方法來做到這一點。有一個[微軟連接問題,要求禁止向多個FOR XML條款的每個元素添加名稱空間](https://connect.microsoft.com/SQLServer/feedback/details/265956/suppress-namespace-attributes -in嵌套選換XML語句)。如果你可以放棄它,也許他們會在將來做到這一點。 –

+0

@aridi解決方法涉及字符串函數順便說一句,我相信你可以自己弄清楚。 –