Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Скорая консультационная помощь по вопросам XPath и XQuery / 6 сообщений из 6, страница 1 из 1
06.03.2014, 13:57
    #38580167
McCar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорая консультационная помощь по вопросам XPath и XQuery
Вопрос из разряда RTFM, но .. не откажите в помощи, каждый бывает в такой ситуации, что вопрос нужно решить срочно, тема малознакомая и не факт что потом еще придется этим заниматься, и времени изучать документацию нет..

Есть некий xml текст с веб-содержимым, пример содержимого:
Код: xml
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.
<table>
  <tr>
    <td>
      <div class="main_props">
        <div class="add_title_wrap">
          <a href="http://irr.ru/real-estate/apartments-sale/new/2-komnatnaya-kv-ra-v-ZhK-Da-Vinchi-advert309739885.html" class="add_title">Московская, Одинцовский, Одинцово, Можайское ш, 122</a>
        </div>
        <div class="placed">
          <i class="p_shosse" />6 км. от МКАД Можайское ш.</div>
        <div class="flat_prop">
          <div class="flat_p">
            <i class="p_room" />
            <div class="flat_p_txt">
              <p>2</p>
              <span>комнат</span>
            </div>
          </div>
          <div class="flat_p">
            <i class="p_square" />
            <div class="flat_p_txt">
              <p>71.5 м<sup>2</sup></p>
              <span>площадь</span>
            </div>
          </div>
          <div class="flat_p">
            <i class="p_etage" />
            <div class="flat_p_txt">
              <p>2</p>
              <span>этаж</span>
            </div>
          </div>
        </div>
        <div class="tags">
          <span>новостройка</span>
        </div>
      </div>
    </td>
    <td>
      <div class="right_block">
        <div class="add_cost">7.114.250 руб.</div>
        <div class="clear_right" />
        <div class="favourite realty_fav">
          <a href="#" class="fav_add" title="Добавить в избранное">В избранное</a>
        </div>
      </div>
    </td>
  </tr>
</table>


При помощи XQuery выражения
(.//div[@class="add_cost"])[1]/text()[1]
мы можем вытащиить отсюда значение цены из тега
<div class="add_cost">7.114.250 руб.</div.
А если нужно допустим достать "Площадь"? Тоесть получается
Код: xml
1.
2.
3.
4.
5.
6.
7.
    <div class="flat_p">
            <i class="p_square" />
            <div class="flat_p_txt">
              <p>71.5 м<sup>2</sup></p>
              <span>площадь</span>
            </div>
          </div>


такая логика - ищем узел <div class="flat_p">, в котором есть тег <i class="p_square" />, и в этом теге ищем тег
<p>71.5 м<sup>2</sup></p>, содержимое которого нам и нужно..
Каким XQuery выражением можно это сделать?
Спасибо.
...
Рейтинг: 0 / 0
06.03.2014, 14:06
    #38580180
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорая консультационная помощь по вопросам XPath и XQuery
div[@class="flat_p"][2]/div/span/text()
...
Рейтинг: 0 / 0
06.03.2014, 16:05
    #38580361
McCar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорая консультационная помощь по вопросам XPath и XQuery
Antonariydiv[@class="flat_p"][2]/div/span/text()
Нее. что то не то..

Код: sql
1.
SELECT @xml.value ('(.//div[@class="add_cost"])[1]/text()[1]', 'nvarchar (max)')  ;


Работает нормально.

Код: sql
1.
SELECT @xml.value ('.//div[@class="flat_p"][2]/div/span/text()', 'nvarchar (max)')  ;


выдает ошибку -
XQuery [value()]: 'value()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *'
...
Рейтинг: 0 / 0
07.03.2014, 10:16
    #38580853
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорая консультационная помощь по вопросам XPath и XQuery
McCar,

Код: sql
1.
SELECT @x.value('((.//div[@class="flat_p_txt"])[2]/span/text())[1]', 'nvarchar (max)');
...
Рейтинг: 0 / 0
07.03.2014, 11:15
    #38580918
McCar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорая консультационная помощь по вопросам XPath и XQuery
Сон Веры ПавловныMcCar,

Код: sql
1.
SELECT @x.value('((.//div[@class="flat_p_txt"])[2]/span/text())[1]', 'nvarchar (max)');


Да, так работает, но выдает строку "площадь", а мне нужно значение этой "площади".
То есть видимо нужно реализовать логику -
вывести содержимое внутри узла с тегами <p>Б, который находится в узле с тегами <div>, в котором есть узел <span>этаж</span>.
...
Рейтинг: 0 / 0
07.03.2014, 11:28
    #38580946
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорая консультационная помощь по вопросам XPath и XQuery
McCarДа, так работает, но выдает строку "площадь", а мне нужно значение этой "площади".
То есть видимо нужно реализовать логику -
вывести содержимое внутри узла с тегами <p>Б, который находится в узле с тегами <div>, в котором есть узел <span>этаж</span>.
Реализуйте. Или вы хотите, чтобы вам дали готовое решение? Там простейший XPath, разобраться в нем не так уж и сложно.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Скорая консультационная помощь по вопросам XPath и XQuery / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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