Jquery XML遍历过滤器日期范围

时间:2015-01-07 14:40:34

标签: jquery xml date date-range jquery-traversing

我试图在XML文件中找到具有节点属性ex的多个节点。如position [validFromDate = 2015-01-05],日期在两个日期(30天窗口)的范围内。另外我需要一个逻辑操作数或者如同在"选择节点IF位置isPrimaryPosition属性= true或位置validFromDate(日期)在date1和date2之间。

  

非常清楚:isPrimaryPosition = true OR(date1> validFromDate< date2)

XML文件的相关部分如下所示:

<positions>
<position isPrimaryPosition="true" validFromDate="2015-06-20">
<position isPrimaryPosition="false" validFromDate="2015-01-19">
<position isPrimaryPosition="false" validFromDate="2015-06-20">
<position isPrimaryPosition="true" validFromDate="2015-01-19">
<position isPrimaryPosition="false" validFromDate="2015-01-19">
<position isPrimaryPosition="false" validFromDate="2015-06-20">
</positions>

我现在正在处理的代码是这样的,但是我无法弄清楚如何在日期之间进行选择逻辑或者这与isPrimaryPosition:

$ansettelse = $(this).find('position[isPrimaryPosition=true],position[validFromDate=2015-01-05]')   
  $ansettelse.each(function() {             
    $stillingskategori  = $(this).parent().siblings('category').attr('id');
    $ansattnummer       = $(this).parent().siblings('employeeId').text();
    $ansettelsesprosent = $(this).parent().siblings('employmentPercentage').text();
});

我希望得到一些帮助,指出我正确的方向。

1 个答案:

答案 0 :(得分:0)

我将分两部分回答这个问题

非常明确:第1部分 [isPrimaryPosition = true] 第2部分 [或(日期1&gt; validFromDate&lt; date2)]

第1部分 - 测试: isPrimaryPosition = true

var value = $(xml).find("position[isPrimaryPosition=true]"); // <-- Get the value here

第2部分 - 测试: OR(date1&gt; validFromDate&lt; date2)

var date1 = '2015-01-19';
var date2 = '2015-01-20';

// Since we are doing OR, If the 1st isPrimaryPosition=true doesn't exist reset value
if(value.length == 0) // <-- Test for the value here
{
   // Add a filter to the position then return test
   value = $(xml).find('position').filter(function() {

       var validFromDate = $(this).text();

       // I think your test is wrong date1 > validFromDate < date2
       // I think it should be date1 < validFromDate < date2 because you are doing range
       // value between to date fields I believe

       return date1 < validFromDate && validFromDate < date2;
   });
}

value.each(function () {

// This is just to spit out a value
$(".main").append($(this).find("date").text() + "<br />"); 

}); 

<div class="main">

</div>

我添加了一个日期标记,只是为了查看xml的值

<?xml version="1.0" encoding="UTF-8"?>
<positions>
    <position isPrimaryPosition="true" validFromDate="2015-06-20"><date>2015-06-20</date>
    </position>
<position isPrimaryPosition="false" validFromDate="2015-01-19"><date>2015-01-19</date>
    </position>
<position isPrimaryPosition="false" validFromDate="2015-06-20"><date>2015-06-20</date>
    </position>
<position isPrimaryPosition="true" validFromDate="2015-01-19"><date>2015-01-19</date>
    </position>
<position isPrimaryPosition="false" validFromDate="2015-01-19"><date>2015-01-19</date>
    </position>
<position isPrimaryPosition="false" validFromDate="2015-06-20"><date>2015-06-20</date>
    </position>
</positions>