Select nodes/value 来自 XML 使用命名空间
Select nodes/value from XML that uses namespace
我想 select 我的 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 parametr - IdTabeliRekorduZrodlowego'。我哪里做错了?
您使用了错误的命名空间。像这样使用 :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)
我想 select 我的 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 parametr - IdTabeliRekorduZrodlowego'。我哪里做错了?
您使用了错误的命名空间。像这样使用 :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)