2013-03-08 60 views
0

這是我的XML文件: -歌廳XML元素ATTR值在文本框中輸入

<products> 
    <product_id value="1"> 
    <tab_id value="351"> 
     <tab_name value="test1" /> 
     <region_timezone value="1" /> 
     <registrationstatus value="2" /> 
     <eventstatus value="2" /> 
     <dist_activity value="5,10068,10070" /> 
     <reg_str_dt value="2013-01-14 20:35:00" /> 
     <reg_end_dt value="2013-01-14 20:35:00" /> 
    </tab_id> 
    </product_id> 
    <product_id value="2"> 
    <tab_id value="352"> 
     <tab_name value="test2" /> 
     <region_timezone value="1" /> 
     <registrationstatus value="2" /> 
     <eventstatus value="2" /> 
     <dist_activity value="5,10069,10070" /> 
     <reg_str_dt value="2013-02-14 20:39:00" /> 
     <reg_end_dt value="2013-02-14 20:39:00" /> 
    </tab_id> 
    </product_id> 
</products> 

這個功能: -

function get_list(){ 
    xmlDoc = $.parseXML(xml), 
    $xml = $(xmlDoc), 
    $title = $xml.find('[value="'+$('#select').val()+'"] *'); 
    var str=''; 
    $title.each(function(){ 
     str+=$(this).attr('value')+' '; 
    }); 
    $("#result").html(str); 
} 

這是HTML代碼: -

<input type="text" id="select"> 
<input type="button" name="button" value="Search" onclick="get_list()" > 
<div id="result"> 
</div> 

這裏我有一個文本框
在文本框中輸入任何xml文件的子attr值EG: -

first text box:- Dist_activity(tag name) 
second textbox:- 5(attr value) 

,然後點擊按鈕,它搜索和顯示第一個元素的值,例如: -

in div "Result":- 1(is product_id value) 

這裏它可以使用XPath和XQuery然後最適合我等也。 感謝...

回答

0

怎麼是這樣的:

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script> 
     var xml; 
     $.get(
     "SOXml_Converted.xml", 
     null, 
     function (data) { 
      xml = data; 
     }, 
     "xml" 
    ); 
     function get_list() { 
      var elName = $('#select').val(); 
      var value = $('#value').val(); 
      var xPath = '//*[local-name() = "' + elName + '" and ' + 
          ' contains(concat(@value, ","), "' + value + ',")]' + 
          '/../../@value'; 


      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); 
     } 
    </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> 

當然,這不會與價值觀「Dist_activity」和「5」找到任何東西,因爲有這個名字沒有元素「 Dist_activity」並沒有甚至dist_activity元素與值5

+0

感謝,但我不知道我要去的正確與否,請查看我的回答是我做錯了? – user2122438 2013-03-09 04:39:16

+0

@ user2122438我修復了您的代碼和我的一些問題。你可以嘗試一下嗎? – JLRishe 2013-03-09 06:17:01

+0

嗯,但我需要一個更多的步驟在他們如何返回第一個元素屬性值例如: - 與此o/p返回tab_id但我想product_id屬性值(y)謝謝你這個答案它解決我的問題 – user2122438 2013-03-09 06:51:53

0
<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script> 
var xml; 
$.get(
    "xml_converted.xml", 
    function(data) { xml=data; }, 
    "html" 
); 
function get_list(){ 
    var xPath = '//*[local-name() = "' + $('#select').val() + '" and @value = "' + 
      $('#value').val() + '"]/..'; 
var iterator = document.evaluate(xPath, documentNode, null, 
       XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null); 
var thisNode = iterator.iterateNext(); 
var str = ''; 
while (thisNode) { 
    str += thisNode.textContent ; 
    thisNode = iterator.iterateNext(); 
} 

    $("#result").html(str); 
} 
</script> 

</head> 
<input type="text" id="select"> 
<input type="text" id="value"> 
<input type="button" name="button" value="Search" onclick="get_list()" > 
<div id="result"> 
</div> 
</html>