我将xml数据传递给存储过程。如果xml包含xmlns属性,则失败。当我删除xmlns时,它工作正常。如何在传入存储过程之前删除xmlns。我正在使用sql server 2008。
答案 0 :(得分:2)
不要试图避免它们 - 使用它们!
最简单的方法是使用WITH XMLNAMESPACES
构造 - 类似于:
;WITH XMLNAMESPACES(DEFAULT 'http://your.name.space.here/2011/June')
(
-- your XQuery/XPath code here - it will by default use the namespace given
)
您也可以轻松拥有多个名称空间 - 您也可以为它们提供前缀(并在XPath表达式中使用它们):
;WITH XMLNAMESPACES('http://your.name.space.here/2011/June' AS ns)
(
-- your XQuery/XPath code here - it will by default use the namespace given
....... xmlcolumn.value('(/ns:root/ns:subelement......)[1]', 'int'). .....
)
有关详细信息和更多解释,请参阅MSDN docs on Adding XML Namespaces