powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / XML в Oracle9i. Примеры разборки
14 сообщений из 239, страница 10 из 10
XML в Oracle9i. Примеры разборки
    #39381079
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
набросал примерчик как тут , но префикс ему не нравится. Похоже, PHD
Код: 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.
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.
WITH v
     AS (SELECT '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <PhdDataResponse
            xmlns="PHDService">
            <PhdDataResult>
                <xs:schema id="NewDataSet"
                    xmlns=""
                    xmlns:xs="http://www.w3.org/2001/XMLSchema"
                    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
                    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="phd_data" msdata:UseCurrentLocale="true">
                        <xs:complexType>
                            <xs:choice minOccurs="0" maxOccurs="unbounded">
                                <xs:element name="phd_data">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="TAGNO" type="xs:int" minOccurs="0" />
                                            <xs:element name="TAGNAME" type="xs:string" minOccurs="0" />
                                            <xs:element name="TIMESTAMP" type="xs:dateTime" minOccurs="0" />
                                            <xs:element name="START_TIMESTAMP" type="xs:dateTime" minOccurs="0" />
                                            <xs:element name="VALUE" msdata:DataType="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:anyType" minOccurs="0" />
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                            </xs:choice>
                        </xs:complexType>
                    </xs:element>
                </xs:schema>
                <diffgr:diffgram
                    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
                    xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
                    <DocumentElement
                        xmlns="">
                        <phd_data diffgr:id="phd_data1" msdata:rowOrder="0">
                            <TAGNO>3185</TAGNO>
                            <TAGNAME>Z1.3118.AM1W2</TAGNAME>
                            <TIMESTAMP1>2016-12-07T11:00:00+02:00</TIMESTAMP1>
                            <START_TIMESTAMP>2016-12-07T11:00:00+02:00</START_TIMESTAMP>
                            <VALUE xsi:type="xs:float"
                                xmlns:xs="http://www.w3.org/2001/XMLSchema">246
                            </VALUE>
                        </phd_data>
                        <phd_data diffgr:id="phd_data2" msdata:rowOrder="1">
                            <TAGNO>3185</TAGNO>
                            <TAGNAME>Z1.3118.AM1W2</TAGNAME>
                            <TIMESTAMP1>2016-12-07T11:01:00+02:00</TIMESTAMP1>
                            <START_TIMESTAMP>2016-12-07T11:00:00+02:00</START_TIMESTAMP>
                            <VALUE xsi:type="xs:float"
                                xmlns:xs="http://www.w3.org/2001/XMLSchema">249
                            </VALUE>
                        </phd_data>
                        <phd_data diffgr:id="phd_data3" msdata:rowOrder="2">
                            <TAGNO>3185</TAGNO>
                            <TAGNAME>Z1.3118.AM1W2</TAGNAME>
                            <TIMESTAMP1>2016-12-07T11:02:00+02:00</TIMESTAMP1>
                            <START_TIMESTAMP>2016-12-07T11:00:00+02:00</START_TIMESTAMP>
                            <VALUE xsi:type="xs:float"
                                xmlns:xs="http://www.w3.org/2001/XMLSchema">252
                            </VALUE>
                        </phd_data>
                    </DocumentElement>
                </diffgr:diffgram>
            </PhdDataResult>
        </PhdDataResponse>
    </soap:Body>
</soap:Envelope>'
                   AS xval
           FROM DUAL)
         SELECT a.*
           FROM v,
                XMLTABLE (
                   XMLNamespaces (
                      'http://www.w3.org/2003/05/soap-envelope/' AS "soap",
                      'http://www.w3.org/2001/XMLSchema-instance' AS "xsi",
                      'http://www.w3.org/2001/XMLSchema' AS "xsd",
                      'urn:schemas-microsoft-com:xml-msdata' AS "msdata",
                      'urn:schemas-microsoft-com:xml-diffgram-v1' AS "diffgr",
                      'PHDService' AS "PHD"),
                   '/soap:Envelope/soap:Body/PHD:PhdDataResponse/PHD:PhdDataResult/diffgr:diffgram/DocumentElement/phd_data'
                   PASSING xmltype (v.xval)
                   COLUMNS TAGNO NUMBER PATH 'type:TAGNO',
                           tagname VARCHAR2 (200) PATH 'type:tagname',
                           TIMESTAMP1 TIMESTAMP PATH 'type:TIMESTAMP1',
                           START_TIMESTAMP TIMESTAMP PATH 'type:START_TIMESTAMP',
                           VALUE NUMBER PATH 'type:value') a

...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39381084
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так работает
Код: 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.
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.
WITH v
     AS (SELECT '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <PhdDataResponse
            xmlns="PHDService">
            <PhdDataResult>
                <xs:schema id="NewDataSet"
                    xmlns=""
                    xmlns:xs="http://www.w3.org/2001/XMLSchema"
                    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
                    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="phd_data" msdata:UseCurrentLocale="true">
                        <xs:complexType>
                            <xs:choice minOccurs="0" maxOccurs="unbounded">
                                <xs:element name="phd_data">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="TAGNO" type="xs:int" minOccurs="0" />
                                            <xs:element name="TAGNAME" type="xs:string" minOccurs="0" />
                                            <xs:element name="TIMESTAMP" type="xs:dateTime" minOccurs="0" />
                                            <xs:element name="START_TIMESTAMP" type="xs:dateTime" minOccurs="0" />
                                            <xs:element name="VALUE" msdata:DataType="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:anyType" minOccurs="0" />
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                            </xs:choice>
                        </xs:complexType>
                    </xs:element>
                </xs:schema>
                <diffgr:diffgram
                    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
                    xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
                    <DocumentElement
                        xmlns="">
                        <phd_data diffgr:id="phd_data1" msdata:rowOrder="0">
                            <TAGNO>3185</TAGNO>
                            <TAGNAME>Z1.3118.AM1W2</TAGNAME>
                            <TIMESTAMP>2016-12-07T11:00:00+02:00</TIMESTAMP>
                            <START_TIMESTAMP>2016-12-07T11:00:00+02:00</START_TIMESTAMP>
                            <VALUE xsi:type="xs:float"
                                xmlns:xs="http://www.w3.org/2001/XMLSchema">246
                            </VALUE>
                        </phd_data>
                        <phd_data diffgr:id="phd_data2" msdata:rowOrder="1">
                            <TAGNO>3185</TAGNO>
                            <TAGNAME>Z1.3118.AM1W2</TAGNAME>
                            <TIMESTAMP>2016-12-07T11:01:00+02:00</TIMESTAMP>
                            <START_TIMESTAMP>2016-12-07T11:00:00+02:00</START_TIMESTAMP>
                            <VALUE xsi:type="xs:float"
                                xmlns:xs="http://www.w3.org/2001/XMLSchema">249
                            </VALUE>
                        </phd_data>
                        <phd_data diffgr:id="phd_data3" msdata:rowOrder="2">
                            <TAGNO>3185</TAGNO>
                            <TAGNAME>Z1.3118.AM1W2</TAGNAME>
                            <TIMESTAMP>2016-12-07T11:02:00+02:00</TIMESTAMP>
                            <START_TIMESTAMP>2016-12-07T11:00:00+02:00</START_TIMESTAMP>
                            <VALUE xsi:type="xs:float"
                                xmlns:xs="http://www.w3.org/2001/XMLSchema">252
                            </VALUE>
                        </phd_data>
                    </DocumentElement>
                </diffgr:diffgram>
            </PhdDataResult>
        </PhdDataResponse>
    </soap:Body>
</soap:Envelope>'
                   AS xval
           FROM DUAL)
         SELECT a.*
           FROM v,
                XMLTABLE (
                   XMLNamespaces (
                      'http://www.w3.org/2003/05/soap-envelope/' AS "soap",
                      'http://www.w3.org/2001/XMLSchema-instance' AS "xsi",
                      'http://www.w3.org/2001/XMLSchema' AS "xsd",
                      'urn:schemas-microsoft-com:xml-msdata' AS "msdata",
                      'urn:schemas-microsoft-com:xml-diffgram-v1' AS "diffgr",
                      'PHDService' AS "PHD"),
                   --'/soap:Envelope/soap:Body/PHD:PhdDataResponse/PHD:PhdDataResult/diffgr:diffgram/DocumentElement/phd_data'
                   '//phd_data'
                   PASSING xmltype(v.xval)
                   COLUMNS TAGNO NUMBER PATH 'TAGNO',
                           tagname VARCHAR2 (200) PATH 'TAGNAME',
                           TIMESTAMP1 timestamp WITH TIME ZONE PATH 'TIMESTAMP',
                           START_TIMESTAMP timestamp WITH TIME ZONE PATH 'START_TIMESTAMP',
                           VALUE VARCHAR2(200) PATH 'VALUE') a
                           

а полный XPATH построить не получается
...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39381093
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде получилось
но если посоветуете как лучше, выслушаю
Код: 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.
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.
WITH v
     AS (SELECT '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <PhdDataResponse
            xmlns="PHDService">
            <PhdDataResult>
                <xs:schema id="NewDataSet"
                    xmlns=""
                    xmlns:xs="http://www.w3.org/2001/XMLSchema"
                    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
                    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="phd_data" msdata:UseCurrentLocale="true">
                        <xs:complexType>
                            <xs:choice minOccurs="0" maxOccurs="unbounded">
                                <xs:element name="phd_data">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="TAGNO" type="xs:int" minOccurs="0" />
                                            <xs:element name="TAGNAME" type="xs:string" minOccurs="0" />
                                            <xs:element name="TIMESTAMP" type="xs:dateTime" minOccurs="0" />
                                            <xs:element name="START_TIMESTAMP" type="xs:dateTime" minOccurs="0" />
                                            <xs:element name="VALUE" msdata:DataType="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:anyType" minOccurs="0" />
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                            </xs:choice>
                        </xs:complexType>
                    </xs:element>
                </xs:schema>
                <diffgr:diffgram
                    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
                    xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
                    <DocumentElement
                        xmlns="">
                        <phd_data diffgr:id="phd_data1" msdata:rowOrder="0">
                            <TAGNO>3185</TAGNO>
                            <TAGNAME>Z1.3118.AM1W2</TAGNAME>
                            <TIMESTAMP>2016-12-07T11:00:00+02:00</TIMESTAMP>
                            <START_TIMESTAMP>2016-12-07T11:00:00+02:00</START_TIMESTAMP>
                            <VALUE xsi:type="xs:float"
                                xmlns:xs="http://www.w3.org/2001/XMLSchema">246
                            </VALUE>
                        </phd_data>
                        <phd_data diffgr:id="phd_data2" msdata:rowOrder="1">
                            <TAGNO>3185</TAGNO>
                            <TAGNAME>Z1.3118.AM1W2</TAGNAME>
                            <TIMESTAMP>2016-12-07T11:01:00+02:00</TIMESTAMP>
                            <START_TIMESTAMP>2016-12-07T11:00:00+02:00</START_TIMESTAMP>
                            <VALUE xsi:type="xs:float"
                                xmlns:xs="http://www.w3.org/2001/XMLSchema">249
                            </VALUE>
                        </phd_data>
                        <phd_data diffgr:id="phd_data3" msdata:rowOrder="2">
                            <TAGNO>3185</TAGNO>
                            <TAGNAME>Z1.3118.AM1W2</TAGNAME>
                            <TIMESTAMP>2016-12-07T11:02:00+02:00</TIMESTAMP>
                            <START_TIMESTAMP>2016-12-07T11:00:00+02:00</START_TIMESTAMP>
                            <VALUE xsi:type="xs:float"
                                xmlns:xs="http://www.w3.org/2001/XMLSchema">252
                            </VALUE>
                        </phd_data>
                    </DocumentElement>
                </diffgr:diffgram>
            </PhdDataResult>
        </PhdDataResponse>
    </soap:Body>
</soap:Envelope>'
                   AS xval
           FROM DUAL)
         SELECT a.*
           FROM v,
                XMLTABLE (
                   XMLNamespaces (
                      'http://www.w3.org/2003/05/soap-envelope' AS "soap",
                      'urn:schemas-microsoft-com:xml-diffgram-v1' AS "diffgr",
                      'PHDService' AS "PHD"),
                   '/soap:Envelope/soap:Body/PHD:PhdDataResponse/PHD:PhdDataResult/diffgr:diffgram/DocumentElement/phd_data'
                   PASSING xmltype(v.xval)
                   COLUMNS TAGNO            NUMBER                   PATH 'TAGNO',
                           tagname          VARCHAR2 (200)           PATH 'TAGNAME',
                           TIMESTAMP1       timestamp WITH TIME ZONE PATH 'TIMESTAMP',
                           START_TIMESTAMP  timestamp WITH TIME ZONE PATH 'START_TIMESTAMP',
                           VALUE            VARCHAR2(200)            PATH 'VALUE'
                           ) a
                           

...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39381151
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коллеги, а децимал сепаратор - точка. Как обрабатывать? Не NLS же менять

Код: plsql
1.
<VALUE xsi:type="xs:float" xmlns:xs="http://www.w3.org/2001/XMLSchema">246.1</VALUE>




Код: 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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
WITH v
     AS (SELECT '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <PhdDataResponse
            xmlns="PHDService">
            <PhdDataResult>
                <xs:schema id="NewDataSet"
                    xmlns=""
                    xmlns:xs="http://www.w3.org/2001/XMLSchema"
                    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
                    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="phd_data" msdata:UseCurrentLocale="true">
                        <xs:complexType>
                            <xs:choice minOccurs="0" maxOccurs="unbounded">
                                <xs:element name="phd_data">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="TAGNO" type="xs:int" minOccurs="0" />
                                            <xs:element name="VALUE" msdata:DataType="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:anyType" minOccurs="0" />
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                            </xs:choice>
                        </xs:complexType>
                    </xs:element>
                </xs:schema>
                <diffgr:diffgram
                    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
                    xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
                    <DocumentElement
                        xmlns="">
                        <phd_data diffgr:id="phd_data1" msdata:rowOrder="0">
                            <TAGNO>3185</TAGNO>
                            <VALUE xsi:type="xs:float" xmlns:xs="http://www.w3.org/2001/XMLSchema">246.1</VALUE>
                        </phd_data>
                    </DocumentElement>
                </diffgr:diffgram>
            </PhdDataResult>
        </PhdDataResponse>
    </soap:Body>
</soap:Envelope>'
                   AS xval
           FROM DUAL)
         SELECT a.*
           FROM v,
                XMLTABLE (
                   XMLNamespaces (
                      'http://www.w3.org/2003/05/soap-envelope' AS "soap",
                      'urn:schemas-microsoft-com:xml-diffgram-v1' AS "diffgr",
                      'PHDService' AS "PHD"),
                   '/soap:Envelope/soap:Body/PHD:PhdDataResponse/PHD:PhdDataResult/diffgr:diffgram/DocumentElement/phd_data'
                   PASSING xmltype(v.xval)
                   COLUMNS TAGNO            NUMBER PATH 'TAGNO',
                           VALUE            number PATH 'VALUE'
                           ) a
                           

...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39381156
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxколлеги, а децимал сепаратор - точка. Как обрабатывать? Не NLS же менять Том Кайт посоветовал конвертить вручную
...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39381171
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
andreymx,

к слову с неймспейсами можно проще:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
         SELECT a.*
           FROM v,
                XMLTABLE (
                   '/*:Envelope/*:Body/*:PhdDataResponse/*:PhdDataResult/*:diffgram/DocumentElement/phd_data'
                   PASSING xmltype(v.xval)
                   COLUMNS TAGNO            NUMBER                   PATH 'TAGNO',
                           tagname          VARCHAR2 (200)           PATH 'TAGNAME',
                           TIMESTAMP1       timestamp WITH TIME ZONE PATH 'TIMESTAMP',
                           START_TIMESTAMP  timestamp WITH TIME ZONE PATH 'START_TIMESTAMP',
                           VALUE            VARCHAR2(200)            PATH 'VALUE'
                           ) a
...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39381186
toobject()
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymxколлеги, а децимал сепаратор - точка. Как обрабатывать? Не NLS же менятьрегистрируй xsd схему с типизацией элементов и мапь их на атрибуты объектного типа.
...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39381199
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxпосоветовал конвертить вручнуюПричём всё из varchar2(4000). Чтобы бы можно было внятно сказать где и какая ошибка вместо невнятного xml parsing failed.
...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39381222
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicandreymxпосоветовал конвертить вручнуюПричём всё из varchar2(4000). Чтобы бы можно было внятно сказать где и какая ошибка вместо невнятного xml parsing failed.да, спасибо, что-то в этом роде уже реализую
...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39385085
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коллеги, попался еще такой странный xml
в <Tasks> идёт черезстрочно группы <resource> и <Task>
максимально приблизился к результату такой хренью
Код: 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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
WITH v AS(
SELECT 
'<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <PerspectGoalsResponse
      xmlns="ProjinWS">
      <PerspectGoalsResult>
        <Projects
          xmlns="">
          <Project>
            <Func_direction>Управление материальными потоками</Func_direction>
            <Tasks>
              <resource>
                <ResName>Дмитрий Васильевич</ResName>
              </resource>
              <Task>
                <TaskName>Постановка</TaskName>
              </Task>
              <resource>
                <ResName>Лариса Станиславовна</ResName>
              </resource>
              <Task>
                <TaskName>Программирование</TaskName>
              </Task>
            </Tasks>
          </Project>
        </Projects>
      </PerspectGoalsResult>
    </PerspectGoalsResponse>
  </soap:Body>
</soap:Envelope>' AS xval FROM dual
)
     SELECT Ab.*, Ac.*, Func_direction
      FROM v,
        XMLTABLE (
          '//Projects'
          PASSING XMLTYPE(v.xval)
          COLUMNS
          Func_direction VARCHAR2 (200) PATH 'Project/Func_direction',
          Tasks_XML XMLTYPE PATH 'Project'
          ) A,
        XMLTABLE (
          '//resource'
          PASSING A.Tasks_XML
          COLUMNS
          ResName VARCHAR2 (200) PATH 'ResName'
          ) Ab,
        XMLTABLE (
          '//Task'
          PASSING A.Tasks_XML
          COLUMNS
          TaskName VARCHAR2 (200) PATH 'TaskName'
          ) Ac


но т.к. Ab и Ac кроссджойнятся, то понятно с каким результатомROWNUMRESNAMETASKNAMEFUNC_DIRECTION1Дмитрий ВасильевичПостановкаУправление материальными потоками2Дмитрий ВасильевичПрограммированиеУправление материальными потоками3Лариса СтаниславовнаПостановкаУправление материальными потоками4Лариса СтаниславовнаПрограммированиеУправление материальными потокамикиньтесь идейкой
...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39385112
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxв <Tasks> идёт черезстрочно группы <resource> и <Task>Ноги выдернуть "автору".
andreymxкиньтесь идейкой following-sibling
...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39385180
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicandreymxв <Tasks> идёт черезстрочно группы <resource> и <Task>Ноги выдернуть "автору".
andreymxкиньтесь идейкой following-sibling буду щаз дёргать поставщика, чтобы разъяснил чётко идею
...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39397896
Сергей Ч.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могу разобраться что я сделал не так. Возвращает пусто:

with t as
(select XMLType('<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns=" http://www.opengis.net/kml/2.2" xmlns:gx=" http://www.google.com/kml/ext/2.2" xmlns:kml=" http://www.opengis.net/kml/2.2" xmlns:atom=" http://www.w3.org/2005/Atom">
<Document>
<name>TERMINAL</name>
<open>1</open>
<Folder xmlns=" http://www.opengis.net/kml/2.2">
<name>Алматы</name>
<description><p id="region_kaz">Алматы</p></description>
<Placemark>
<name>Терминал в маг "Технодом"</name>
<description><p id="name_kaz">"Технодом" дүкеніндегі терминал </p>
<p id="adres1">пр. Абая, 44, г. Алматы, Казахстан.</p>
<p id="adres2">уг.ул. Байтурсынова, в ТД "Променад"</p>
<p id="adres1_kaz">АБай, даңғылы, 44, Алматы қ, Қазақстан</p>
<p id="adres2_kaz">Байтурсын көшесінің қиылысы "Променад" ОССО</p>
<p id="work_schedule">пн-вс: с 10:00-22:00, без перерыва</p>
<p id="work-schedule_kaz">дс-же: 10:00-22:00, үзіліссіз</p>
<p id="phone">7979</p>
<p id="dwh_id">5</p>
<p id="note1">Категория: Терминалы самообслуживания;</p>
<p id="note2">Погашение кредитов в режиме онлайн; Пополнение депозитов в режиме онлайн; Пополнение дебетной карты в режиме онлайн; Пополнение мобильных платежей; Оплата коммунальных платежей; Оплата справок (срочная/обычная); Оплата авто штрафов по г.Алматы; Онлайн заявка на получение кредита; Онлайн заявка на получение депозита.</p>
<p id="note1_kaz">Санаты: Өзіне-өзі қызмет көрсету терминалдары</p>
<p id="note2_kaz">Несиелерді онлайн режимде өтеу; Депозиттерді онлайн режимде толықтыру; Дебет картасын онлайн режимде толықтыру; Ұялы төлемдерді толықтыру; Тұрмыстық қызметтерді төлеу; Анықтамаларды төлеу (жедел / жедел емес); Алматы қ. бойынша көлік айыппұлдарын төлеу; Несие алуға онлайн өтінім; Депозит алуға онлайн өтінім.</p></description>
<LookAt>
<longitude>76.92541292977619</longitude>
<latitude>43.24003942730797</latitude>
<altitude>0</altitude>
<heading>-0.0002406642888524397</heading>
<tilt>16.2121247048951</tilt>
<range>114.7453283132917</range>
<gx:altitudeMode xmlns:gx=" http://www.google.com/kml/ext/2.2">relativeToSeaFloor</gx:altitudeMode>
</LookAt>
<styleUrl>#m_ylw-pushpin00</styleUrl>
<Point>
<coordinates>76.92527024992003,43.24004679643284,0</coordinates>
</Point>
</Placemark>
</Folder>
</Document>
</kml>') x
from dual)
select
extract(value(s), '//description//p[@id="adres1"]/@value', 'xmlns="http://www.opengis.net/kml/2.2"' ).getStringVal()
from t,
table(XMLSequence(extract(x,
'kml/Document/Folder/Placemark/description',
'xmlns="http://www.opengis.net/kml/2.2"'))) s
...
Рейтинг: 0 / 0
XML в Oracle9i. Примеры разборки
    #39398035
Сергей Ч.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался. Осталось понять как добавить в запрос
--kml/Document/name
--kml/Document/Folder/name

Как это сделать понятие не имею...


with t as
(select XMLType('<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns=" http://www.opengis.net/kml/2.2" xmlns:gx=" http://www.google.com/kml/ext/2.2" xmlns:kml=" http://www.opengis.net/kml/2.2" xmlns:atom=" http://www.w3.org/2005/Atom">
<Document>
<name>TERMINAL</name>
<open>1</open>
<Folder xmlns=" http://www.opengis.net/kml/2.2">
<name>Алматы</name>
<description><p id="region_kaz">Алматы</p></description>
<Placemark>
<name>Терминал в маг "Технодом"</name>
<description><p id="name_kaz">"Технодом" дүкеніндегі терминал </p>
<p id="adres1">пр. Абая, 44, г. Алматы, Казахстан.</p>
<p id="adres2">уг.ул. Байтурсынова, в ТД "Променад"</p>
<p id="adres1_kaz">АБай, даңғылы, 44, Алматы қ, Қазақстан</p>
<p id="adres2_kaz">Байтурсын көшесінің қиылысы "Променад" ОССО</p>
<p id="work_schedule">пн-вс: с 10:00-22:00, без перерыва</p>
<p id="work-schedule_kaz">дс-же: 10:00-22:00, үзіліссіз</p>
<p id="phone">7979</p>
<p id="dwh_id">5</p>
<p id="note1">Категория: Терминалы самообслуживания;</p>
<p id="note2">Погашение кредитов в режиме онлайн; Пополнение депозитов в режиме онлайн; Пополнение дебетной карты в режиме онлайн; Пополнение мобильных платежей; Оплата коммунальных платежей; Оплата справок (срочная/обычная); Оплата авто штрафов по г.Алматы; Онлайн заявка на получение кредита; Онлайн заявка на получение депозита.</p>
<p id="note1_kaz">Санаты: Өзіне-өзі қызмет көрсету терминалдары</p>
<p id="note2_kaz">Несиелерді онлайн режимде өтеу; Депозиттерді онлайн режимде толықтыру; Дебет картасын онлайн режимде толықтыру; Ұялы төлемдерді толықтыру; Тұрмыстық қызметтерді төлеу; Анықтамаларды төлеу (жедел / жедел емес); Алматы қ. бойынша көлік айыппұлдарын төлеу; Несие алуға онлайн өтінім; Депозит алуға онлайн өтінім.</p></description>
<LookAt>
<longitude>76.92541292977619</longitude>
<latitude>43.24003942730797</latitude>
<altitude>0</altitude>
<heading>-0.0002406642888524397</heading>
<tilt>16.2121247048951</tilt>
<range>114.7453283132917</range>
<gx:altitudeMode xmlns:gx=" http://www.google.com/kml/ext/2.2">relativeToSeaFloor</gx:altitudeMode>
</LookAt>
<styleUrl>#m_ylw-pushpin00</styleUrl>
<Point>
<coordinates>76.92527024992003,43.24004679643284,0</coordinates>
</Point>
</Placemark>
</Folder>
</Document>
</kml>') x
from dual)
select value(s),
extract(value(s), '//description//p[@id="adres1"]/text()', 'xmlns="http://www.opengis.net/kml/2.2"' ).getStringVal()
from t,
table(XMLSequence(extract(x,
'kml/Document/Folder/Placemark/description',
'xmlns="http://www.opengis.net/kml/2.2"'))) s
...
Рейтинг: 0 / 0
14 сообщений из 239, страница 10 из 10
Форумы / Oracle [игнор отключен] [закрыт для гостей] / XML в Oracle9i. Примеры разборки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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