Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как перебрать тэги XML ?  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
хай
есть XML
<request parentId="4">
<nodeProp id="1" value="value1"/>
<nodeProp id="2" value="value2"/>
...
<nodeProp id="n" value="valueN"/>
</request>
нужно перебрать все value в цикле вроде:
loop
dbms_output.put_line(value);
end;
скажите, как это проще сделать ?
я знаю, есть такая
29 окт 07, 16:18    [4851896]     Ответить | Цитировать Сообщить модератору
 Re: Как перебрать тэги XML ?  [new]
TiG
Member

Откуда:
Сообщений: 780
если чистый pl/sql, то DBMS_XMLDOM.GETELEMENTSBYTAGNAME + DBMS_XMLDOM.GETATTRIBUTE
29 окт 07, 16:59    [4852192]     Ответить | Цитировать Сообщить модератору
 Re: Как перебрать тэги XML ?  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
SQL> begin
  2   for i in (
  3      select
  4        extractValue(value(t),'nodeProp@id') id
  5        , extractValue(value(t),'nodeProp@value') value
  6  
  7      from Table(XMLSequence(Extract(xmlType(
  8      '<request parentId="4">
  9      <nodeProp id="1" value="value1"/>
 10      <nodeProp id="2" value="value2"/>
 11      <nodeProp id="n" value="valueN"/>
 12      </request>'
 13      ),'request/nodeProp')))t
 14   ) loop
 15     dbms_output.put_line('id='||i.id);
 16     dbms_output.put_line('value='||i.value);
 17   end loop;
 18  end;
 19  /
 
id=1
value=value1
id=2
value=value2
id=n
value=valueN
 
PL/SQL procedure successfully completed
29 окт 07, 17:02    [4852218]     Ответить | Цитировать Сообщить модератору
 Re: Как перебрать тэги XML ?  [new]
ГостЪ
Guest
--Eugene--
хай
есть XML
<request parentId="4">
<nodeProp id="1" value="value1"/>
<nodeProp id="2" value="value2"/>
...
<nodeProp id="n" value="valueN"/>
</request>
нужно перебрать все value в цикле вроде:
loop
dbms_output.put_line(value);
end;
скажите, как это проще сделать ?
я знаю, есть такая


declare
l_xml xmltype := xmltype('<request parentId="4">
	<nodeProp id="1" value="value1"/>
	<nodeProp id="2" value="value2"/>
	<nodeProp id="n" value="valueN"/>
</request>');
  i number;
  l_val xmltype;
begin  
  i:= 1;
  loop
    l_val := l_xml.extract('/request/nodeProp['||i||']');
    exit when l_val is null;
    dbms_output.put_line(l_val.extract('/nodeProp/attribute::value').getstringval);
    i:= i +1;
  end loop;  
end; 
29 окт 07, 17:04    [4852233]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить