Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Парсинг XML в бд / 8 сообщений из 8, страница 1 из 1
20.01.2020, 13:27
    #39916317
litrik05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг XML в бд
Добрый день! Не получается распарсить xml. Не получается добраться ни до одного элемента, запрос всегда возвращает пустоту. Что я делаю не правильно?

Текст скрипта прилагаю

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
declare @sql_string NVARCHAR(255), @parm_def NVARCHAR(255),@file_name varchar (255),@id_dom INT,
@xml_str VARCHAR(MAX), @xml xml

		select @xml='<?xml version="1.0" encoding="UTF-8"?>
		<?xml-stylesheet type="text/xsl" href="C:\SDBEB\rest_mt535_02.xslt"?><?xml-stylesheet type="text/xsl" href="https://www.besteffortsbank.ru/ru/depobsl/ras_dep/rest_mt535_02.xslt"?>
<CustMessages xmlns="CustMessages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="CustMessages CustMessages.xsd">
  <AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.01">
    <Fr>
      <OrgId>
       <Nm>Some Bank</Nm>
        <Id>
          <OrgId>
            <AnyBIC>SOMERUMM</AnyBIC>
          </OrgId>
        </Id>
      </OrgId>
    </Fr>
    <To>
      <OrgId>
      <Nm>111</Nm>
        <Id>
          <OrgId>
            <Othr>
              <Id>SOMEBANKID</Id>
              <SchmeNm>
                <Prtry>XXXBank</Prtry>
              </SchmeNm>
            </Othr>
          </OrgId>
        </Id>
      </OrgId>
    </To>
    <BizMsgIdr>A123321</BizMsgIdr>
    <MsgDefIdr>semt.002.001.02</MsgDefIdr>
    <CreDt>2019-12-25T08:28:27.04Z</CreDt>
  </AppHdr>
  <Document xmlns="urn:iso:std:iso:20022:tech:xsd:semt.002.001.02">
    <CtdyStmtOfHldgsV02>
      <MsgId>
        <Id>R123321</Id>
        <CreDtTm>2019-12-25T11:28:27.447</CreDtTm>
      </MsgId>
      <MsgPgntn>
        <PgNb>1</PgNb>
        <LastPgInd>true</LastPgInd>
      </MsgPgntn>
      <StmtGnlDtls>
        <Ref>R96336</Ref>
        <StmtDtTm>
          <Dt>2019-12-24</Dt>
        </StmtDtTm>
        <Frqcy>
          <FrqcyAsCd>DAIL</FrqcyAsCd>
        </Frqcy>
        <UpdTp>
          <StmtUpdTpAsCd>COMP</StmtUpdTpAsCd>
        </UpdTp>
        <ActvtyInd>true</ActvtyInd>
        <StmtBsis>
          <StmtBsisAsCd>SETT</StmtBsisAsCd>
        </StmtBsis>
      </StmtGnlDtls>
      <AcctDtls>
        <Id>
          <SmplId>
            <Prtry>
              <Id>ANB33333</Id>
            </Prtry>
          </SmplId>
        </Id>
        <FngbInd>true</FngbInd>
        <AcctOwnr>
          <NmAndAdr>
            <Nm>222</Nm>
          </NmAndAdr>
        </AcctOwnr>
      </AcctDtls>
      <SubAcctDtls>
        <Id>
          <SmplId>
            <Prtry>
              <Id>B22111</Id>
            </Prtry>
          </SmplId>
        </Id>
        <FngbInd>true</FngbInd>
        <ActvtyInd>true</ActvtyInd>
      </SubAcctDtls>
      <SubAcctDtls>
        <Id>
          <SmplId>
            <Prtry>
              <Id>T99888</Id>
            </Prtry>
          </SmplId>
        </Id>
        <FngbInd>true</FngbInd>
        <ActvtyInd>true</ActvtyInd>
        <BalForSubAcct>
          <AggtQty>
            <Qty>
              <Unit>1.00000000</Unit>
            </Qty>
          </AggtQty>
          <AvlblQty>
            <Qty>
              <Unit>1.00000000</Unit>
            </Qty>
          </AvlblQty>
          <FinInstrmDtls>
            <Id>
              <ISIN>US123321654</ISIN>
            </Id>
          </FinInstrmDtls>
        </BalForSubAcct>
      </SubAcctDtls>
    </CtdyStmtOfHldgsV02>
  </Document>
</CustMessages>'


    EXEC sp_xml_preparedocument @id_dom OUTPUT, @xml

  SELECT * from OPENXML (@id_dom,'CustMessages/AppHdr/Fr/OrgId')
    with (NM varchar(255) 'Nm' )
   
    EXEC sp_xml_removedocument @id_dom


...
Рейтинг: 0 / 0
20.01.2020, 13:53
    #39916336
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг XML в бд
litrik05
Добрый день! Не получается распарсить xml. Не получается добраться ни до одного элемента, запрос всегда возвращает пустоту. Что я делаю не правильно?
Это из за xmlns
...
Рейтинг: 0 / 0
20.01.2020, 14:04
    #39916346
litrik05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг XML в бд
alexeyvg,А что нужно делать? Когда удалял из тэга CustMessages строку
xmlns="CustMessages" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="CustMessages CustMessages.xsd", то получалось извлечь информацию, но как извлечь когда xmlns прописан?
...
Рейтинг: 0 / 0
20.01.2020, 14:20
    #39916356
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг XML в бд
litrik05, ну можно как-то так
Код: sql
1.
2.
3.
4.
5.
6.
  ;WITH XMLNAMESPACES 
(
    DEFAULT 'CustMessages',
    'urn:iso:std:iso:20022:tech:xsd:head.001.001.01' as u
)
  SELECT n.v.value('./u:Nm[1]', 'nvarchar(max)') from @xml.nodes('//CustMessages/u:AppHdr/u:Fr/u:OrgId') n(v)
...
Рейтинг: 0 / 0
20.01.2020, 14:21
    #39916357
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг XML в бд
litrik05,
или
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
DECLARE @rootxmlns varchar(100)
SET @rootxmlns = '<root xmlns:v="CustMessages" xmlns:u="urn:iso:std:iso:20022:tech:xsd:head.001.001.01"/>'

      EXEC sp_xml_preparedocument @id_dom OUTPUT, @xml, @rootxmlns

  SELECT * from OPENXML (@id_dom,'//v:CustMessages/u:AppHdr/u:Fr/u:OrgId')
    with (NM varchar(255) 'u:Nm' )
   
    EXEC sp_xml_removedocument @id_dom
...
Рейтинг: 0 / 0
20.01.2020, 14:58
    #39916374
litrik05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг XML в бд
buser, Получилось! Большое спасибо! Подскажите пожалуйста, где можно об этой теме почитать подробнее, в какую сторону копать?
...
Рейтинг: 0 / 0
20.01.2020, 16:15
    #39916407
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг XML в бд
litrik05,

в справке, заголовок

xml, тип данных [SQL Server], XQuery.
...
Рейтинг: 0 / 0
20.01.2020, 18:23
    #39916495
litrik05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг XML в бд
Владислав Колосов, Спасибо, буду изучать!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Парсинг XML в бд / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]