Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / помогите про парсить xml файл / 5 сообщений из 5, страница 1 из 1
14.01.2017, 14:28
    #39384705
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите про парсить xml файл
Код: 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
14.01.2017, 16:32
    #39384738
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите про парсить xml файл
вот так написал
Код: 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
14.01.2017, 16:42
    #39384740
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите про парсить xml файл
Бакытнаписал вот такой код не видит данные


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

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
14.01.2017, 16:50
    #39384742
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите про парсить xml файл
Бакыттеперь только валюты не хватает

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

Код: 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
14.01.2017, 16:50
    #39384743
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите про парсить xml файл
SY,

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


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