2013-03-21 5 views
0

를 사용하여 모든 속성 값을 얻을 : -이 내 XML 파일입니다 XPath는

<results value="1"> 
    <result value="111"> 
     <Country_Code value="IN"/> 
     <Country_Name value="India"/> 
     <Region_Name value="Gujarat"/> 
     <City value="Rajkot"/> 
     <loction lat="13.060422" lng="80.24958300000003"/> 
    </result> 
    <result value="222"> 
     <Country_Code value="KE"/> 
     <Country_Name value="Kenya"/> 
     <Region_Name value="Vihiga"/> 
     <City value="Kakamega"/> 
     <loction lat="0.1182473" lng="34.7334515999997"/> 
    </result> 
</results> 

이 내 코드입니다 : -이 코드 XPath는 리턴으로

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script> 
     var xml; 
     $.get(
     "sea.xml", 
     null, 
     function (data) { 
      xml = data; 
     }, 
     "xml" 
    ); 

     function get_list(ls) { 
      var elName = $('#select').val(); 
      var value = $('#value').val(); 
      if(elName == "" || value == "") 
      { 
      } 
      else if (elName != "" || value != "") 
      { 
      var xPath = '//*[ @lat '+ ls +' "'+elName+'" and @lng '+ ls +' "'+value+'"]'+'/../City/@*'; 


      var iterator = xml.evaluate(xPath, xml.documentElement, null, 
       XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null); 
      var thisNode = iterator.iterateNext(); 
      var str = ''; 
      while (thisNode) { 
       if (str) { 
        str += ', '; 
       } 
       str += thisNode.textContent; 
       thisNode = iterator.iterateNext(); 
      } 

      $("#result").text(str); 
     } 
     else 
     {} 
     } 
    </script> 
</head> 
<body> 
    <input type="text" id="select"> 
    <input type="text" id="value"> 
    <input type="button" name="button" value="Search" onclick="get_list('=')"> 
    <div id="result"> 
    </div> 
</body> 
</html> 

Rajkot 속성하지만 난 변경할 Xpath에서 모든 속성을 얻으려면

xpath의 값이 일치하면 xPath를 사용하여 city 속성 값 만 반환하십시오.
는하지만 난 같은 모든 속성 값에 원하는 : - IN,Inida,Gujarat,Rajkot,13.060422,80.24958300000003

답변

1

다음의 XPath :

//loction[@lat='13.060422' and @lng='80.24958300000003'][1]/preceding-sibling::City/@value 

출력 :

value="Rajkot" 

그리고 다음의 XPath :

//loction[@lat='13.060422' and @lng='80.24958300000003'][1]/preceding-sibling::*/@* 

출력 :

value="IN" 
----------------------- 
value="India" 
----------------------- 
value="Gujarat" 
----------------------- 
value="Rajkot" 
+0

아니요. 사용자는 내 요구 사항을 이해하지 못합니다. 위도와 lang 값이 동일한 레벨 노드 속성 값을 반환하는 것보다 일치하는 경우 내 질문을 편집하십시오 ... –

+0

입력란에 13.060422 및 80.24958300000003을 입력하면 구자라트 Rajkot에서 반환됩니다. 13.060422 80.24958300000003이 유형은 현재 하나의 속성 만 반환합니다. 라지 코트 내가 b'coz의 XPath의 끝에서 설정 /../City/@* –

+0

네 큰 좋은 일을 사랑하지만, 어떤 생각 xml 파일에는 속성이 없을 때 \t' \t \t <같은 XPath는 세트 XML의 유형에 비해 Country_Code> IN \t \t 인도 \t \t 구자라트 012 3,516,\t \t 라지 \t \t 13.060422 \t \t 80.24958300000003 \t \t \t \t KE \t \t 케냐 \t \t Vihiga \t \t Kakamega \t \t 0.1182473 \t \t 34.7334515999997 \t ' –