2013-02-28 2 views
0

У меня есть XML-файлXpath Дата Сравнение с помощью PHP

<?xml version="1.0" encoding="UTF-8" ?> 
<?xml-stylesheet type="text/xsl" href="test1.xsl"?> 
<products> 
    <node> 
     <node> 
      <dist_value> 
      <node> 55 </node> 
      <node> 59 </node> 
      <node> 72 </node> 
      </dist_value> 
      <reg_str_dt> 
      <node> 2013-08-03 17:29:00 </node> 
      </reg_str_dt> 
      <product_id> 1 </product_id> 
     </node> 
    </node> 
    <node> 
     <node> 
      <dist_value> 
      <node> 72 </node> 
      <node> 19 </node> 
      <node> 49 </node> 
      </dist_value> 
      <reg_str_dt> 
      <node> 2013-10-25 17:29:00 </node> 
      </reg_str_dt> 
      <product_id> 2 </product_id> 
     </node> 
    </node> 
    <node> 
     <node> 
      <dist_value> 
      <node> 12 </node> 
      <node> 548 </node> 
      <node> 112 </node> 
      </dist_value> 
      <reg_str_dt> 
      <node> 2013-08-12 17:29:00 </node> 
      </reg_str_dt> 
      <name> test </name> 
      <product_id> 3 </product_id> 
     </node> 
    </node> 
</products> 

я написал этот PHP код для сравнения даты

$my_date = '2013-09-01'; 
$xml = new DOMDocument(); 
$xml->load('product.xml'); 
$xpd = new DOMXPath($xml); 
false&&$result_data = new DOMElement(); 
$result = $xpd->query("//node[reg_str_dt[(translate(node,'-','') > translate($my_date, '-', '') ]/*"); 
foreach($result as $result_data){ 
    echo $result_data->nodeName ." => ". $result_data->nodeValue ."<br/>"; 
} 

но этот код не работает

на выходе он будет возвращать данные продукта 2

+0

Я действительно удивляюсь, почему вы думаете, что это может * работать вообще. Это не правильный способ сравнения строк и чисел (поскольку в xpath нет чисел no). – hakre

ответ

2

попробуйте следующее: -

<?php 
$my_date = '2013-09-01'; 
$xml = new DOMDocument(); 
$xml->load('product.xml'); 
$xpd = new DOMXPath($xml); 
false&&$result_data = new DOMElement(); 
$result = $xpd->query('//node[translate(translate(translate("2013-09-01 17:20:19", "-", "")," ",""),":","") > translate(translate(translate(node/reg_str_dt/node,"-","")," ",""),":","")]/*'); 
foreach($result as $result_data){ 
    echo $result_data->nodeName." => ". $result_data->nodeValue ."<br/>";; 
} 
?> 
Смежные вопросы