我已经阅读了很多相关资料,包括这个stackexchange主题,但它并不能解决我的问题。以下是一些XML代码(抱歉所有字段都是波兰语,因为它是银行webservice的响应)。如果我选择DaneZapytaniaFin对象,则...
;WITH XMLNAMESPACES(DEFAULT 'http://bik.pl/cc/big')
SELECT * FROM OPENXML(@idoc, '/BIGIMResponse/DaneZapytaniaFin')
我得到了所有的值。
但是当我尝试获取例如名称字段时
;WITH XMLNAMESPACES(DEFAULT 'http://bik.pl/cc/big')
SELECT * FROM OPENXML(@idoc, '/BIGIMResponse/DaneZapytaniaFin/dane-id-kons/imie')
我只得到了空值。
当我试图获取它的父节点,dane-id-kons时,结果也是一样的。
;WITH XMLNAMESPACES(DEFAULT 'http://bik.pl/cc/big')
SELECT * FROM OPENXML(@idoc, '/BIGIMResponse/DaneZapytaniaFin/dane-id-kons')
这是空值。
有人能给我一些关于如何获取这些值的建议吗?提前感谢!
我的XML文件如下:
<?xml version="1.0" encoding="utf-8"?>
<BIGIMResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DaneZapytaniaFin>
<forma-pr-podm forma-pr-podm="01" xmlns="http://bik.pl/cc/big" />
<dane-id-kons form-przek-nazw-i-im="01" imie="NAME" nazw="SURNAME" pesel="1234567890" rodz-dok-tozs="ID" seria-nr-dok-tozs="ABC123456" obywatelstwo="PL" xmlns="http://bik.pl/cc/big" />
<daty-upow data-up-15-1="2019-11-22T00:00:00" data-up-24-1="2019-11-22T00:00:00" data-up-bik="2019-11-22T00:00:00" data-up-zbp="2019-11-22T00:00:00" xmlns="http://bik.pl/cc/big" />
</DaneZapytaniaFin>
</BIGIMResponse>
我正在直接从文件路径读取它,例如:
create table #p_TempDM (dane xml)
declare @idoc INT
declare @sql varchar(max)
set @sql = '
insert into #p_TempDM select CONVERT(xml, bulkcolumn, 2) imp from
openrowset (bulk '''+@filePath+''', single_blob) as dane
'
exec (@sql)
declare @x xml
select @x = dane from #p_TempDM
EXEC sp_xml_preparedocument
@idoc OUTPUT,
@x;