Как получить первый элемент по XPath в Oracle

В моей базе данных Oracle у меня есть такие записи:

<ROOT>
  <Event>
    <Type>sldkfvjhkljh</Type>
    <ID>591252</ID>
  </Event>
  <Data>
    <File>
      <Name>1418688.pdf</Name>
      <URL>/591252/1418688.pdf</URL>
    </File>
    <File>
      <Name>1418688.xml</Name>
      <URL>/591252/1418688.xml</URL>
    </File>
  </Data>
</ROOT>

Мне нужно извлечь значение из первого тега <Name>. Если я попытаюсь:

Select xmltype(xml_data).extract('//Name[1]/text()').getStringVal() from MY_TABLE

Я получил:

1418688.pdf1418688.xml

Почему так и как я могу получить только 1418688.pdf?

Версия Оракула:

Oracle Database 10g Enterprise Edition, выпуск 10.2.0.4.0 — 64bi


person parxier    schedule 08.07.2010    source источник
comment
Просто интересно, что вы получаете от xpath //File[1]/Name/text()? Я думаю, что оба элемента Name являются #1, потому что в своих узлах они каждый первый.   -  person REW    schedule 08.07.2010


Ответы (1)


Я думаю, что оба элемента Name являются номером 1 в этом документе, потому что в своих узлах они каждый первый. Попробуйте //File[1]/Name/text()

person REW    schedule 08.07.2010
comment
//File[last()]/Name/text() должен работать в этом случае. - person REW; 15.01.2015