我有一个名为XML的表(在SQL Server2008中),并且有一个名为XmlDocumenttype的字段XML。我正在尝试从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 ...构造,您可以轻松使用命名空间。
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=声明!
xmlns=