我有一个名为XML的表(在sql Server 2008中),它有一个名为XML的XmlDocument字段.我试图从XML变量中删除属性.
这是我的xml的样子
- <clue_personal_auto xmlns="http://cp.com/rules/client">
- <admin>
- <receipt_date>03/16/2011</receipt_date>
- <date_request_ordered>03/16/2011</date_request_ordered>
- <report_usage>Personal</report_usage>
- </admin>
- </clue_personal_auto>
我的查询
- UPDATE XML
- SET XmlDocument.modify('delete (/clue_personal_auto/@xmlns)[1]')
- WHERE xmlid = 357
当我在查询分析器中运行此查询时,我看到消息“1行受影响”,但实际上clue_personal_auto元素的xmlns属性未被删除.知道我做错了什么.
谢谢
BB
解决方法
我似乎无法找到一个简单的方法来做到这一点 – 但真正的问题仍然是:你为什么要删除命名空间?使用WITH XMLNAMESPACES …构造,您可以轻松地使用命名空间.
而不是花费大量精力去摆脱它 – 了解XML命名空间并开始使用它们!
您可以在查询中轻松使用该XML命名空间:
- ;WITH XMLNAMESPACES (DEFAULT 'http://cp.com/rules/client' )
- SELECT
- XmlDocument.value('(/clue_personal_auto/admin/report_usage)[1]','varchar(25)')
- FROM XML
- WHERE ID = 357
并对它感到高兴 – 不再需要人工删除xmlns =声明!