Модераторы: Aliance, IZ@TOP, SamDark, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XPath: выдача узлов с условием по дате 
:(
    Опции темы
Black_leopard
Дата 1.3.2016, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Добрый день!

Есть XML файл (test.xml):
Код

<opinion-list total="216" count="1" page="1">
  <opinion id="45952857" agree="1" reject="0" grade="2">
    <region>213</region>
    <author>Дмитрий</author>
     <date>2015-03-10T13:26:41.000+04:00</date>
  </opinion>
  <opinion id="45952858" agree="1" reject="0" grade="2">
    <author>Иван</author>
      <date>2014-03-10T13:26:41.000+04:00</date>
    </opinion>
    ....
</opinion-list>


Никак не могу сообразить как на xpath написать выражение для выдачи узлов opinion с датой в теге <date> больше указанной даты.

Код

$date = "2015-01-01";

$dom = new DOMDocument;

    $dom->load("test.xml");
    $xpath = new DOMXPath($dom);
    $opinions = $xpath->query("//opinion[date > $date]");


так не хочет работать.
Потратил уже пару дней, ну никак не могу сообразить.

Это сообщение отредактировал(а) Black_leopard - 1.3.2016, 11:46
PM MAIL   Вверх
Black_leopard
Дата 2.3.2016, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Решил задачу следующим образом:

1 вариант: (сравниваем только по дате без времени)
Код

$opinions = $xpath->query('//opinion[translate(substring(date, 0, 11), "-", "") > 20160228]');


2 вариант: (сравниваем и по дате и по времени, учитываем смещение по GMT)
Код

$opinions = $xpath->query('//opinion[translate(translate(translate(translate(translate(date, "T", ""), "-", ""), ":", ""), "+", ""), ".", "") > 201602281200000000300]')


В своем проекте решил использовать первый вариант. Даже если в рамках одного дня будет несколько записей в системе они не продублируются (проверка еще по внешнему id)

PM MAIL   Вверх
_zorn_
Дата 2.3.2016, 19:10 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 847
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Даю бесплатный совет - Хпас мёртв. Учи css селекторы.
PM MAIL   Вверх
Black_leopard
Дата 13.9.2016, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Цитата(_zorn_ @ 2.3.2016,  19:10)
Даю бесплатный совет - Хпас мёртв. Учи css селекторы.

Очень любопытное наблюдение. А какой вариант удобней для парсинга XML документов? 
PM MAIL   Вверх
_zorn_
Дата 28.9.2016, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 847
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(Black_leopard @  13.9.2016,  15:31 Найти цитируемый пост)
Очень любопытное наблюдение. А какой вариант удобней для парсинга XML документов?  

Зависит от того что вы используете. Для PHP я бы предложил Crawler от симфонии, ну а для других спрашивайте у компетентных лиц.  smile 
PM MAIL   Вверх
Google
  Дата 21.9.2017, 11:26 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0798 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.