2011-04-19 25 views
1

,我的类的序列化xml无效。幸运的是,仅仅删除一个xml-element来修复旧的序列化就足够了。由于数据模型的更改,直接更改sql server上sql-column的内容

我将这些序列化对象(序列化为xml文本)存储在nvarchar(MAX)字段中的sql-server 2008数据库中。我正在寻找最佳的方法来自动编辑所有xml以删除错误标记,而不用编写提取数据的应用程序,删除标记并将数据写回数据库。

更换可以通过正则表达式来完成,下面的正则表达式可以提取XML元素:

<list>.*</list> 

由于提前,
弗兰克

+0

您应该能够通过将其转换为XML并使用XML方法删除我原以为会想到的标记。然而,我不是一个擅长自我的地区! – 2011-04-19 14:43:10

回答

3

如果这是一个一次性的,你可以尝试一个快速和肮脏的更换:

update YourTable 
set  col1 = substring(col1,1,charindex('<list>', col1)-1) + 
       substring(col1,charindex('</list>', col1)+len('</list>'),len(col1)) 
where charindex('<list>', col1) > 0 

<角色并没有在XML不允许的,所以你不必担心阿布t文本字段干扰。

+0

是的,这是一次性的。这正是我所期待的,非常感谢! – Aaginor 2011-04-27 15:15:02