Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: X технологии > XPath: выдача узлов с условием по дате


Автор: Black_leopard 1.3.2016, 11:45
Добрый день!

Есть 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 2.3.2016, 09:28
Решил задачу следующим образом:

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)

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

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

Очень любопытное наблюдение. А какой вариант удобней для парсинга XML документов? 

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

Зависит от того что вы используете. Для PHP я бы предложил Crawler от симфонии, ну а для других спрашивайте у компетентных лиц.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)