powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / помогите про парсить xml файл
5 сообщений из 5, страница 1 из 1
помогите про парсить xml файл
    #39384705
Бакыт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" encoding="UTF-8"?>
<CurrencyRates Name="Daily Exchange Rates" Date="15.01.2017">
  <Currency ISOCode="USD">
    <Nominal>1</Nominal>
    <Value>69,4935</Value>
  </Currency>
  <Currency ISOCode="EUR">
    <Nominal>1</Nominal>
    <Value>73,8994</Value>
  </Currency>
  <Currency ISOCode="KZT">
    <Nominal>1</Nominal>
    <Value>0,2093</Value>
  </Currency>
  <Currency ISOCode="RUB">
    <Nominal>1</Nominal>
    <Value>1,1705</Value>
  </Currency>
</CurrencyRates>



написал вот такой код не видит данные
Код: plsql
1.
2.
3.
select 
extractvalue(xml_data, '/Currency/Nominal') first_name,
from xml_data_tab;
...
Рейтинг: 0 / 0
помогите про парсить xml файл
    #39384738
Бакыт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так написал
Код: plsql
1.
2.
3.
4.
5.
6.
select extractvalue(d.column_value, '//Nominal' ) as NumCode
     , extractvalue(d.column_value, '//Value') as CharCode
      
From (select xml_data
from xml_data_tab) t  
, table(xmlsequence(t.xml_data.extract('/CurrencyRates/Currency'))) d



1 1 69,4935
2 1 73,8994
3 1 0,2093
4 1 1,1705

теперь только валюты не хватает
...
Рейтинг: 0 / 0
помогите про парсить xml файл
    #39384740
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бакытнаписал вот такой код не видит данные


Чтобы вытащить огурец из банки нужно:

1. открыть банку.
2. определиться какой огурец самый симпатичный (я предпочитаю зеленые )

Код: plsql
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.
with xml_data_tab as (
                      select xmltype('<?xml version="1.0" encoding="UTF-8"?>
<CurrencyRates Name="Daily Exchange Rates" Date="15.01.2017">
  <Currency ISOCode="USD">
    <Nominal>1</Nominal>
    <Value>69,4935</Value>
  </Currency>
  <Currency ISOCode="EUR">
    <Nominal>1</Nominal>
    <Value>73,8994</Value>
  </Currency>
  <Currency ISOCode="KZT">
    <Nominal>1</Nominal>
    <Value>0,2093</Value>
  </Currency>
  <Currency ISOCode="RUB">
    <Nominal>1</Nominal>
    <Value>1,1705</Value>
  </Currency>
</CurrencyRates>') xml_data from dual
)
select  extractvalue(xml_data, '/CurrencyRates/Currency[@ISOCode="USD"]/Nominal') first_name
  from  xml_data_tab
/

FIRST_NAME
----------
         1

SQL>



Кроме того, extractvalue давно deprecated. Используй XQUERY:

Код: plsql
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.
with xml_data_tab as (
                      select xmltype('<?xml version="1.0" encoding="UTF-8"?>
<CurrencyRates Name="Daily Exchange Rates" Date="15.01.2017">
  <Currency ISOCode="USD">
    <Nominal>1</Nominal>
    <Value>69,4935</Value>
  </Currency>
  <Currency ISOCode="EUR">
    <Nominal>1</Nominal>
    <Value>73,8994</Value>
  </Currency>
  <Currency ISOCode="KZT">
    <Nominal>1</Nominal>
    <Value>0,2093</Value>
  </Currency>
  <Currency ISOCode="RUB">
    <Nominal>1</Nominal>
    <Value>1,1705</Value>
  </Currency>
</CurrencyRates>') xml_data from dual
)
select  xmlcast(
                xmlquery('/CurrencyRates/Currency[@ISOCode="USD"]/Nominal' passing xml_data returning content)
                as number
               ) first_name
  from  xml_data_tab
/

FIRST_NAME
----------
         1

SQL>



А если все "огурцы":

Код: plsql
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.
with xml_data_tab as (
                      select xmltype('<?xml version="1.0" encoding="UTF-8"?>
<CurrencyRates Name="Daily Exchange Rates" Date="15.01.2017">
  <Currency ISOCode="USD">
    <Nominal>1</Nominal>
    <Value>69,4935</Value>
  </Currency>
  <Currency ISOCode="EUR">
    <Nominal>1</Nominal>
    <Value>73,8994</Value>
  </Currency>
  <Currency ISOCode="KZT">
    <Nominal>1</Nominal>
    <Value>0,2093</Value>
  </Currency>
  <Currency ISOCode="RUB">
    <Nominal>1</Nominal>
    <Value>1,1705</Value>
  </Currency>
</CurrencyRates>') xml_data from dual
)
select  first_name,
        last_name
  from  xml_data_tab,
        xmltable(
                 '/CurrencyRates/Currency'
                 passing xml_data
                 columns
                    first_name number path 'Nominal',
                    last_name  varchar2(5) path '@ISOCode'
               ) 
/

FIRST_NAME LAST_
---------- -----
         1 USD
         1 EUR
         1 KZT
         1 RUB

SQL>



SY.
...
Рейтинг: 0 / 0
помогите про парсить xml файл
    #39384742
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бакыттеперь только валюты не хватает

Валюты всем всегда не хватает :

Код: plsql
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.
with xml_data_tab as (
                      select xmltype('<?xml version="1.0" encoding="UTF-8"?>
<CurrencyRates Name="Daily Exchange Rates" Date="15.01.2017">
  <Currency ISOCode="USD">
    <Nominal>1</Nominal>
    <Value>69,4935</Value>
  </Currency>
  <Currency ISOCode="EUR">
    <Nominal>1</Nominal>
    <Value>73,8994</Value>
  </Currency>
  <Currency ISOCode="KZT">
    <Nominal>1</Nominal>
    <Value>0,2093</Value>
  </Currency>
  <Currency ISOCode="RUB">
    <Nominal>1</Nominal>
    <Value>1,1705</Value>
  </Currency>
</CurrencyRates>') xml_data from dual
)
select  x.*
  from  xml_data_tab,
        xmltable(
                 '/CurrencyRates/Currency'
                 passing xml_data
                 columns
                    isocode varchar2(6) path '@ISOCode',
                    nominal number path 'Nominal',
                    value   varchar2(10) path 'Value'
               ) x
/

ISOCOD    NOMINAL VALUE
------ ---------- ----------
USD             1 69,4935
EUR             1 73,8994
KZT             1 0,2093
RUB             1 1,1705

SQL>



SY.
...
Рейтинг: 0 / 0
помогите про парсить xml файл
    #39384743
Бакыт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

огромное спасибо,
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / помогите про парсить xml файл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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