2015-01-07 2 views
0

노드 속성 ex가있는 XML 파일에서 여러 노드를 찾으려고합니다. like 위치 [validFromDate = 2015-01-05]와 날짜가 두 날짜 (30 일간의 기간) 범위 내에있는 경우. 또한 나는 위치 isPrimaryPosition 속성 = True 또는 위치 validFromDate (날짜) 날짜 1과 날짜 2 사이에있는 경우 노드를 선택 "의 논리 피연산자 또는이 필요Jquery XML 통과 필터 날짜 범위

은 매우 명확하게하려면. isPrimaryPosition = True 또는 (날짜 1을 > 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> 

내가 지금 일하고 있어요 코드는 다음과 같다하지만 난 방법을 알아낼 수 없습니다 그 사이에 선택을하십시오. n 날짜를 논리적으로 또는 this 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(); 
}); 

올바른 방향으로 나를 가리키는 데 도움이되기를 바랍니다.

나는 두 부분

에서이 질문에 대답합니다

+0

XML 파일에서 노드를 가져 오는 방법은 무엇입니까? 너 아저씨들하고 있니? json 객체를 사용하고 있습니까? js 쪽에서 XML 데이터가 문자열입니까? – Demodave

+0

나는 Ajax 호출을 사용하여 XML을 얻는다. – petrusjak

+0

var $ person = $ (xml) .find ('ssn : contains ('+ $ ('# fld_socialsecurity'). \ ./ g, "") + '))'); 그리고 나서 $ person.each (function() { – petrusjak

답변

0

은 매우 명확합니다 : 1 부 [isPrimaryPosition = TRUE] 2 부 [OR (날짜 1> validFromDate < DATE2)]

부 1 - 테스트 : 사실 isPrimaryPosition =

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

2 부 - 테스트 : 또는 그냥 XML에 대한 값을 볼 수있는 날짜 태그를 추가 (날짜 1> validFromDate < 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 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>