【问题标题】:Select nodes/value from XML that uses namespace从使用命名空间的 XML 中选择节点/值
【发布时间】:2018-12-17 10:15:25
【问题描述】:

我想从我的 XML 中选择这一行:

<komentarz>Nieprawidłowy parametr - IdTabeliRekorduZrodlowego</komentarz>

我的代码和 XML 看起来像:

DECLARE @XML XML
DECLARE @NRZAM VARCHAR(4000)

SET @XML = '
<tns:powiadom
    xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne">
  <nazwaKwalifikowanaInterfejsuWywolywanego xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne">{http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie}zarejestrujStanZgodyAsync</nazwaKwalifikowanaInterfejsuWywolywanego>
  <odpowiedz xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne" xsi:type="ns3:OdpowiedzZgod">
    <uid>EEE5A475-ECF5-4DBD-AB4E-7AB6442A4D6D</uid>
    <status>BLAD</status>
    <stanZgodyStatus xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne">
      <idPoziomy>4</idPoziomy>
      <idReferencji>114601901</idReferencji>
      <idTypyZgod>1110</idTypyZgod>
      <kodBledu>14</kodBledu>
      <komentarz>Nieprawidłowy parametr - IdTabeliRekorduZrodlowego</komentarz>
    </stanZgodyStatus>
    <stanZgodyStatus xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne">
      <idPoziomy>4</idPoziomy>
      <idReferencji>114601901</idReferencji>
      <idTypyZgod>1092</idTypyZgod>
      <kodBledu>14</kodBledu>
      <komentarz>Nieprawidłowy parametr - IdTabeliRekorduZrodlowego</komentarz>
    </stanZgodyStatus>
  </odpowiedz>
  <odpowiedz xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne" xsi:type="ns3:OdpowiedzZgod">
    <uid>EEE5A475-ECF5-4DBD-AB4E-7AB6442A4D6D</uid>
    <status>BLAD</status>
    <stanZgodyStatus xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne">
      <idPoziomy>4</idPoziomy>
      <idReferencji>114601901</idReferencji>
      <idTypyZgod>1110</idTypyZgod>
      <kodBledu>14</kodBledu>
      <komentarz>Nieprawidłowy parametr - IdTabeliRekorduZrodlowego</komentarz>
    </stanZgodyStatus>
    <stanZgodyStatus xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne">
      <idPoziomy>4</idPoziomy>
      <idReferencji>114601901</idReferencji>
      <idTypyZgod>1092</idTypyZgod>
      <kodBledu>14</kodBledu>
      <komentarz>Nieprawidłowy parametr - IdTabeliRekorduZrodlowego</komentarz>
    </stanZgodyStatus>
  </odpowiedz>
  <metryka xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne">
    <uzytkownik>sa</uzytkownik>
    <system>SUZ</system>
    <data>2018-12-17T10:38:12.880</data>
    <uid>811ED2F9-1A71-4F9F-B858-A8EE256F6604</uid>
  </metryka>
</tns:powiadom>
'

SET @NRZAM = (
    SELECT TOP 1
        x.Rec.query('komentarz').value('.','nvarchar(2000)') AS 'komentarz'
    FROM
    @XML.nodes('declare namespace
        s="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie";
        s:powiadom/odpowiedz/stanZgodyStatus') AS x(Rec)
)

SELECT @XML
SELECT @NRZAM

我的@NRZAM 仍然为空,但它将是“Nieprawidłowy 参数 - IdTabeliRekorduZrodlowego”。我哪里做错了?

【问题讨论】:

    标签: sql sql-server xml xml-namespaces


    【解决方案1】:

    您使用了错误的命名空间。像这样使用:tns 的命名空间:

    SELECT x.Rec.query('komentarz').value('.','nvarchar(2000)') AS 'komentarz'
    FROM @XML.nodes('declare namespace 
        s="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne";
        s:powiadom/odpowiedz/stanZgodyStatus'
    ) AS x(Rec) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      相关资源
      最近更新 更多