Как получить атрибут внешнего тэга и его значение в XML?
Andrey1963
Дата: 30.05.2006 10:37:31
Имеем
create table avt_xml (ID NUMBER not null,DESCRIPTION XMLTYPE)
insert into avt_xml values (1,
XMLType('<FAQ-LIST subscriber_id="123456789">
<QUESTION>
<QUERY>Question 1</QUERY>
<RESPONSE>Answer goes here.</RESPONSE>
</QUESTION>
</FAQ-LIST>'));
запрос:
select id,extractValue(description, '/FAQ-LIST/QUESTION/RESPONSE')
from avt_xml where id=1;
вернет
Answer goes here.
А вот каким образом получить значение атрибута FAQ-LIST?
т.е. subscriber_id="123456789"
С уважением, Андрей.
Andrey1963
Дата: 30.05.2006 10:53:11
Извиняюсь,
не значение атрибута FAQ-LIST,
а значение атрибута subscriber_id тэга FAQ-LIST.
Так, наверное, будет правильно.
С уважением, Андрей.
Tolmachov Dmitiry
Дата: 30.05.2006 10:59:05
select d.extract('//FAQ-LIST//@subscriber_id') .getStringVal() surname
from table(XMLSequence(XMLType('<?xml version="1.0" encoding="windows-1257" ?>
<FAQ-LIST subscriber_id="123456789">
<QUESTION>
<QUERY>Question 1</QUERY>
<RESPONSE>Answer goes here.</RESPONSE>
</QUESTION>
</FAQ-LIST>').extract('FAQ-LIST'))) d; |
Elic
Дата: 30.05.2006 11:05:56
select extractValue(description, '/FAQ-LIST@subscriber_id') from avt_xml where id = 1;
EXTRACTVALUE(DESCRIPTION,'/FAQ-LIST@SUBSCRIBER_ID')
-----------------------------------------------------
123456789
|
Andrey1963
Дата: 30.05.2006 11:09:50
Спасибо Дмитирй.
А можно пример с указанием поля description, как указано в первой теме?
Дело в том, что запросы типа
Select t.description.extract() from avt_xml t
у меня почему-то зависают.
Версия Oracle 9.2.0.7.0
С уважением, Андрей.
Andrey1963
Дата: 30.05.2006 11:11:51
Спасибо, Elic.
Andrey1963
Дата: 30.05.2006 11:30:10
Можно еще вопрос
В поле description указанной таблицы есть записи, содержащие
информацию либо типа insert, либо delete, либо update
<insert oper_date="2005-04-17">
<subscriber subscriber_id="678760">
<subscriber_name>Иванов</subscriber_name>
</subscriber>
</insert>
<update oper_date="2005-05-20">
<subscriber subscriber_id="176485">
<subscriber_name>Иванов</subscriber_name>
</subscriber>
</update>
<delete oper_date="2005-05-20">
<subscriber subscriber_id="176485">
<subscriber_name>Иванов</subscriber_name>
</subscriber>
</delete>
select extractValue(description, '/insert/subscriber@subscriber_id') from avt_xml
Как наиболее быстрым путем получить subsriber_id, в не зависимости от типа внешнего тэга и наименование этого тэга (два поля).
С уважением, Андрей.
Tolmachov Dmitiry
Дата: 30.05.2006 11:53:37
select extractValue(description, '//subscriber@subscriber_id')
from avt_xml
|