修改SQL Server中的xml元素名称

时间:2011-02-25 15:03:03

标签: sql xml sql-server-2005

如何将元素名称从Cust更改为Customer?

<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>

2 个答案:

答案 0 :(得分:1)

您可以使用替换:

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

这是相当安全的,因为<作为XML中的数据无效,它将显示为&lt;或ASCII或UNICODE序列。

答案 1 :(得分: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,您可以相当轻松地“恢复”转换中丢失的属性。