【问题标题】:Extracting data from XML Nodes从 XML 节点中提取数据
【发布时间】:2018-02-01 19:43:08
【问题描述】:

我正在测试这个简单的脚本,只是想知道为什么它不起作用。

DECLARE @myDoc xml  
DECLARE @ProdID int  

SET @myDoc = 
    '<Datatype xmlns="V8_0_1" id="113" name="PF_CleaningMode" hdl="47/4/SB8_3-910-8243-19/0/113" odobjid="915">
         <Datatypevalue id="2" name="Intermittent" />
         <Datatypevalue id="1" name="Continuous" />
         <Datatypevalue id="0" name="Off" />
     </Datatype>'  

SET @ProdID =  @myDoc.value('(Datatype/@id)[1]', 'int' )  
SELECT @ProdID  

希望您能提供帮助。谢谢。

【问题讨论】:

    标签: sql sql-server xml sql-server-2012 xml-parsing


    【解决方案1】:

    您只是只是忽略了&lt;Datatype&gt; 节点上定义的默认 XML 命名空间:

    <Datatype xmlns="V8_0_1" id="113" name="PF_CleaningMode" 
              **************
    

    您需要在查询中包含它!

    像这样:

    ;WITH XMLNAMESPACES(DEFAULT 'V8_0_1')
    SELECT  @myDoc.value('(Datatype/@id)[1]', 'INT')  
    

    你会得到预期的输出

    113
    

    【讨论】:

    • 谢谢! ...我不知道我需要将 NameSpace 包含到我的脚本中。现在可以了。
    猜你喜欢
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多