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

Откуда:
Сообщений: 108
Добрый день!
Существует следующий запрос:
SELECT 
data.extract('//info/text()').getstringval() INVOICE_NUMBER
FROM TABLE(XMLSequence(XMLTYPE(
'<?xml version="1.0" encoding="iso-8859-1"?>
<XML>
	<node>
		<info>5001</info>
		<node>
			<info>5002</info>
		</node>
		<node>
			<info>5003</info>
		</node>
	</node>
</XML>'
).extract('/XML/node'))) data
он возвращает такие данные:
500150025003
однако нужно чтобы возвращались данные только родительской ноды, т.е.
5001
Подскажите плиз как это сделать?
22 окт 07, 13:24    [4822201]     Ответить | Цитировать Сообщить модератору
 Re: XmlType, как получить результат только из родительской ноды  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116117
Может так ?

SQL> 
SQL> SELECT
  2  data.extract('//info/text()').getstringval() INVOICE_NUMBER
  3  FROM TABLE(XMLSequence(XMLTYPE(
  4  '<?xml version="1.0" encoding="iso-8859-1"?>
  5  <XML>
  6    <node>
  7      <info>5001</info>
  8      <node>
  9        <info>5002</info>
 10      </node>
 11      <node>
 12        <info>5003</info>
 13      </node>
 14    </node>
 15  </XML>'
 16  ).extract('/XML/node/info'))) data
 17  /
 
INVOICE_NUMBER
--------------------------------------------------------------------------------
5001
 
SQL> 
22 окт 07, 13:30    [4822247]     Ответить | Цитировать Сообщить модератору
 Re: XmlType, как получить результат только из родительской ноды  [new]
Elic
Member

Откуда:
Сообщений: 29979
extract('/*/info/text()')
22 окт 07, 13:32    [4822258]     Ответить | Цитировать Сообщить модератору
 Re: XmlType, как получить результат только из родительской ноды  [new]
\/lad
Member

Откуда:
Сообщений: 108
Спасибо за ответ,
а если немного усложнить задачу, и выбирать не <info> а <node> только первого уровня (для рекурсивной обработки). Как это можно сделать?
22 окт 07, 13:46    [4822361]     Ответить | Цитировать Сообщить модератору
 Re: XmlType, как получить результат только из родительской ноды  [new]
\/lad
Member

Откуда:
Сообщений: 108
Сори, не сразу понял что имел ввиду Elic, так действительно работает
SELECT
data.extract('/node/info/text()').getstringval() test1,
data.extract('//node/info/text()').getstringval() test2
FROM TABLE(XMLSequence(XMLTYPE(
'<?xml version="1.0" encoding="iso-8859-1"?>
<XML>
    <node>
      <info>5001</info>
      <node>
        <info>5002</info>
      </node>
      <node>
        <info>5003</info>
        <node>
          <info>5004</info>
        </node>
      </node>
    </node>
    <node>
      <info>5005</info>
    </node>
</XML>'
).extract('/XML/node'))) data
22 окт 07, 14:29    [4822632]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить