【问题标题】:Using XPath expressions inside SQL Server stored procedure在 SQL Server 存储过程中使用 XPath 表达式
【发布时间】:2015-03-04 20:48:45
【问题描述】:

我正在尝试使用 XPath 表达式在 SQL Server 存储过程内的 XML 文档中选择节点或节点集。

我正在尝试做一些类似于 c# 中的代码的事情

 XmlDocument xmlDoc = new XmlDocument();
 xmlDoc.Load(response.GetResponseStream());

 XmlNode contact = xmlDoc.SelectSingleNode("//users/user/contact");
 string strContact = contact.InnerText.Trim();

XML 是从存储过程中调用 Web 服务的结果。

类似于这个例子。 Calling Web Service from stored procedure

但是 XML 看起来像这样:

<DocumentElement xmlns="">
  <stats>
    <delivered>5</delivered>
  </stats>
</DocumentElement>

我需要使用类似于

的语句检索传递的节点的值
XmlNode delivered = xmlDoc.SelectSingleNode("//stats/delivered");

【问题讨论】:

    标签: sql-server xpath


    【解决方案1】:

    您显然忽略了在根元素上定义的 XML 命名空间 - 您需要尊重该 XML 命名空间并将其包含在您的查询中!

    -- Sample data - using a *SAMPLE* namespace - replace with your own!
    DECLARE @input XML = '<DocumentElement xmlns="urn:sample-namespace">
      <stats>
        <delivered>5</delivered>
      </stats>
    </DocumentElement>'
    
    -- set up a query that *uses* that XML namespace instead of ignoring it...
    ;WITH XMLNAMESPACES( DEFAULT 'urn:sample-namespace')
    SELECT
        @input.value('(/DocumentElement/stats/delivered)[1]', 'int')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多