【问题标题】:Parse data from XML with namespace使用命名空间解析 XML 中的数据
【发布时间】:2021-04-06 06:33:45
【问题描述】:

我正在尝试解析来自 SQL Server 的 XML 数据。但是,虽然我尝试了很多方法,但都没有成功。

当我运行脚本时,它不会给出错误但返回一个不记录

DECLARE @xmlData XML

SET @xmlData = '<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Body>
    <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
      <faultcode>S:VersionMismatch</faultcode>
      <faultstring>Couldnt create SOAP message. Expecting Envelope in namespace http://schemas.xmlsoap.org/soap/envelope/, but got null </faultstring>
    </S:Fault>
  </S:Body>
</S:Envelope>
'

SET @xmlData = (SELECT @xmlData.query('declare default element namespace "http://schemas.xmlsoap.org/soap/envelope/";
/Envelope/Body'))

SELECT @xmlData

SELECT b.value('(./Fault/faultcode/text())[1]', 'Varchar(50)') AS [Name]
  FROM @xmlData.nodes('/Body') AS a (b)

【问题讨论】:

    标签: sql-server xml-parsing


    【解决方案1】:

    使用WITH XMLNAMESPACES

    ;WITH XMLNAMESPACES('http://schemas.xmlsoap.org/soap/envelope/' AS S)
    SELECT b.value('(./S:Fault/faultcode/text())[1]', 'Varchar(50)') AS [Name]
      FROM @xmlData.nodes('//S:Body') AS a (b);
    

    db<>fiddle demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 2014-01-10
      • 2010-11-08
      • 2018-07-15
      • 2012-06-11
      相关资源
      最近更新 更多