【问题标题】:sql server XML parameter with namespace attribute具有命名空间属性的sql server XML参数
【发布时间】:2011-06-08 13:30:24
【问题描述】:

我将 xml 数据传递给存储过程。如果 xml 包含 xmlns 属性,则失败。当我删除 xmlns 时,它工作正常。如何在传递到存储过程之前删除 xmlns。我正在使用 sql server 2008。

【问题讨论】:

    标签: xml sql-server-2008 stored-procedures


    【解决方案1】:

    不要试图避免它们 - 使用它们!

    最简单的方法是使用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了解更多详情和解释

    【讨论】:

      猜你喜欢
      • 2014-05-14
      • 1970-01-01
      • 2023-03-17
      • 2020-05-21
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多