更新xml列的命名空间

时间:2012-10-07 16:34:34

标签: .net sql-server xml

重构后,我发现需要更改现有数据的命名空间。每个db行包含一个包含以下数据的列:

<Bla xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.contoso.com/ooo/entities/v1">
   <Titles>
      <smth sourceId="19" targetId="2">
         <smth2>New</smth2>
      </smth>
   </Titles>
</Bla>

如何将值xmlns="http://schemas.contoso.com/ooo/entities/v1"更新为xmlns="http://schemas.contoso.com/ooo/common/v1"

实际异常是InvalidOperationException(不期望名称空间)。 m.b可以改变数据阅读器的反序列化,但是......

1 个答案:

答案 0 :(得分:0)

update MyTable
set MyColumn = 
Convert(xml,
    REPLACE(
        Convert(nvarchar(max), MyColumn),
        'http://schemas.contoso.com/ooo/entities/v1',
        'http://schemas.contoso.com/ooo/common/v1')
    )