powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Скорая консультационная помощь по вопросам XPath и XQuery
6 сообщений из 6, страница 1 из 1
Скорая консультационная помощь по вопросам XPath и XQuery
    #38580167
McCar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос из разряда 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
Скорая консультационная помощь по вопросам XPath и XQuery
    #38580180
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
div[@class="flat_p"][2]/div/span/text()
...
Рейтинг: 0 / 0
Скорая консультационная помощь по вопросам XPath и XQuery
    #38580361
McCar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Скорая консультационная помощь по вопросам XPath и XQuery
    #38580853
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
McCar,

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

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


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


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