2016-10-18 3 views
0

저는이 개념에 매우 익숙하며 아래 요구 사항을 달성하기 위해 고심 중입니다.jquery를 사용하여 xml의 자식 노드를 통해 이동

내 javascript 변수에 "detailJSTotal"이라는 아래 xml 개체가 있습니다. 여기

<response> 
<div> 
    <p> 
     <label> 
      ID: 
     </label> 
     812161 
    </p> 
    <p> 
     <label> 
      Name: 
     </label> 
     252 
    </p> 
    <a href="javascript:void(0)" onclick="text4.xml"> 
     more... 
    </a> 
</div> 
<div> 
    <p> 
     <label> 
      ID: 
     </label> 
     812162 
    </p> 
    <p> 
     <label> 
      Name: 
     </label> 
     252 
    </p> 
    <a href="javascript:void(0)" onclick="test2.xml"> 
     more... 
    </a> 
</div> 
<div> 
    <p> 
     <label> 
      ID: 
     </label> 
     812163 
    </p> 
    <p> 
     <label> 
      Name: 
     </label> 
     252 
    </p> 
    <a href="javascript:void(0)" onclick="text.xml"> 
     more... 
    </a> 
</div> 
<div> 
    <p> 
     <label> 
      ID: 
     </label> 
     812164 
    </p> 
    <p> 
     <label> 
      Name: 
     </label> 
     252 
    </p> 
    <a href="javascript:void(0)" onclick="test1.xml"> 
     more... 
    </a> 
</div> 

루트 요소 (대응)는 다수에게 < div> 요소를 포함한다. 각 < div> 요소는 < label> 요소이고 값은 <> 요소입니다.

내값> < div> 요소의 주어진 < 레이블> 'ID'값에 대한 a 요소의 'onclick'속성 값을 가져와야합니다.

예 :

나는 '812161'과 ID < 라벨> 값을 제공하여 "onclick을"<의 속성 A> 요소의 값을 취득 할 수 있습니다

. 위의 예에서 반환 값은 "text4.xml"이어야합니다.

답변

0

Jquery의 xmlParser을 시도해보십시오. 이

var detailJSTotal= `<response> 
 
<div> 
 
    <p> 
 
     <label> 
 
      ID: 
 
     </label> 
 
     812161 
 
    </p> 
 
    <p> 
 
     <label> 
 
      Name: 
 
     </label> 
 
     252 
 
    </p> 
 
    <a href="javascript:void(0)" onclick="text4.xml"> 
 
     more... 
 
    </a> 
 
</div> 
 
<div> 
 
    <p> 
 
     <label> 
 
      ID: 
 
     </label> 
 
     812162 
 
    </p> 
 
    <p> 
 
     <label> 
 
      Name: 
 
     </label> 
 
     252 
 
    </p> 
 
    <a href="javascript:void(0)" onclick="test2.xml"> 
 
     more... 
 
    </a> 
 
</div> 
 
<div> 
 
    <p> 
 
     <label> 
 
      ID: 
 
     </label> 
 
     812163 
 
    </p> 
 
    <p> 
 
     <label> 
 
      Name: 
 
     </label> 
 
     252 
 
    </p> 
 
    <a href="javascript:void(0)" onclick="text.xml"> 
 
     more... 
 
    </a> 
 
</div> 
 
<div> 
 
    <p> 
 
     <label> 
 
      ID: 
 
     </label> 
 
     812164 
 
    </p> 
 
    <p> 
 
     <label> 
 
      Name: 
 
     </label> 
 
     252 
 
    </p> 
 
    <a href="javascript:void(0)" onclick="test1.xml"> 
 
     more... 
 
    </a> 
 
</div></response>`; 
 
    xmlDOM = $($.parseXML(detailJSTotal)); 
 
function getAttrForID(id){ 
 
    console.log($($(xmlDOM).find("p:contains(" + id + ")").siblings("a")[0]).attr("onclick")); 
 
    return $($(xmlDOM).find("p:contains(" + id + ")").siblings("a")[0]).attr("onclick"); 
 
} 
 

 
console.log(getAttrForID("812161"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

안녕하세요. 다음과 같이 할 수 있습니다. 그것은 내 경우에 루핑을 사용하여 제한됩니다. – santoshM

+0

그러면 반환 유형은 무엇입니까? –

+0

문자열, 그 값은 onclick이어야합니다 .. – santoshM

1

그냥 jQuery를 통해 XML을로드 :

var $xml = $(detailJSTotal); 

이제 jQuery를 모든 jQuery를-기능을 사용하고 당신이 필요로하는 모든 정보를 선택할 수 있습니다. 예를 들어 find()를 사용

var $label = $xml.find('label:contains("test")'); 
return $label.next('a').attr('onclick'); 

참고 : 테스트되지 않은 그냥 내 머리에서 작성합니다.

+0

감사합니다 다리오처럼 .. 당신은이 방법을 수행 할 수 있습니다 나의 희망에 대한 확신을 주었다. 아래 답변은 내 요구 사항에 정확하게 부합하고 작동합니다. – santoshM

관련 문제