2011-02-25 76 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