2013-03-21 31 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> 

这是我的代码: -

<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> 

与此代码的XPath返回属性值Rajkot但我想改变在Xpath中获取所有属性

在xPath的帮助下,如果值匹配xml文件,只返回城市属性值。
但我要像所有的属性值: - 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

没有人,你不明白我的要求。如果lat和lang值匹配,则返回相同级别的节点属性值,这里我正在编辑我的问题,请检查... – 2013-03-21 09:48:50

+0

如果我们在文本框中输入13.060422和80.24958300000003,则返回IN Gujarat Rajkot 13.060422 80.24958300000003此时此类型只返回一个属性拉杰果德b'coz我的XPath年底成立/../City/@* – 2013-03-21 09:52:12

+0

是极大的利好就业亲爱的,但任何想法时,XML文件中有没有属性比类型的XPath组XML像 \t' \t \t <国家代码> IN \t \t <国家名称>印度 \t \t Gujarat \t \t 拉杰科德 \t \t 13.060422 \t \t 80.24958300000003 \t \t \t \t KE \t \t 肯尼亚 \t \t Vihiga \t \t 卡卡梅加 \t \t 0.1182473 \t \t 34.7334515999997 \t ' – 2013-03-21 10:39:50