2013-03-08 6 views
0

это мой файл XML: -адресность XML значения элемента атра с использованием детского Аттрибута вошло в текстовом поле

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

здесь у меня есть одно текстовое поле
Введено в текстовое поле любое значение дочернего attr файла xml EG: -

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

, а затем нажмите на кнопку его поиска и отображения первого значения EG элемента: -

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

+0

@ user2122438 Я исправил некоторые проблемы, которые были в вашем коде и моем. Не могли бы вы дать вышеприведенную попытку? – JLRishe

+0

hmmmm good, но мне нужен еще один шаг в них: как вернуть значение атрибута первого элемента, например: - с этим o/p return tab_id, но я хочу значение атрибута product_id (y), спасибо за этот ответ, его решить мою большую проблему – user2122438

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>