2011-02-25 25 views
3

如何將元素名稱從Cust更改爲Customer?在SQL Server中修改xml元素名稱

<Cust id="1"> 
    <Name>aaaaaaaaaa</Name> 
    <Desc>bbbbbbbbbb</Desc> 
</Cust> 

當我使用下面的語句

select @myXml.query('/node()[1]/node()') for xml raw('Customer') 

SQL刪除屬性

<Customer> 
    <Name>aaaaaaaaaa</Name> 
    <Desc>bbbbbbbbbb</Desc> 
</Customer> 

回答

1

試試這個:

SELECT 
    @myXml.value('(/Cust/@id)[1]', 'int') AS '@id', 
    @myXml.query('/node()[1]/node()') 
FOR XML PATH('Customer') 

給我的輸出:

<Customer id="1"> 
    <Name>aaaaaaaaaa</Name> 
    <Desc>bbbbbbbbbb</Desc> 
</Customer> 

隨着FOR XML PATH,你可以很容易 「恢復」 是獲取轉換失去了屬性。

1

您可以使用替換:

replace(replace(@YourXml, '<Cust id', '<Customer id)', '</Cust>', '</Customer>') 

這是相當安全的,因爲<一世作爲XML中的數據無效,它將顯示爲&lt;或ASCII或UNICODE序列。

+0

這是一種非寬限的方法。其他想法? – chomik 2011-02-25 15:30:52

+0

@chomik:SQL Server中的XML修改支持完全是「非寬限」。考慮做這個客戶端網站。 :) – Andomar 2011-02-25 16:02:03