2013-04-18 13 views
9

to mój dokument xml: -get atrybut elementu nadrzędnego wartość

<root> 
    <child_1 entity_id = "1" value="india"> 
     <child_2 entity_id = "2" value="gujarat"> 
      <child_3 entity_id = "3" value="Ahemdabad"/> 
      <child_4 entity_id = "4" value="Surat"/> 
      <child_5 entity_id = "5" value="Rajkot"/>   
     </child_2> 
    </child_1> 
</root> 

to jest mój javascript kod html: -

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script> 
     var xml; 
     var ind_sex; 
     $.get(
     "code.xml", 
     null, 
     function (data) { 
      xml = data; 
     }, 
     "xml" 
    ); 
     function get_list() { 
      var city = $('#name').val(); 
      alert(city); 
      var xPath = '//*[@value = "city"]' + 
          '/../../@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="name"></input> 
    <input type="button" name="button" value="Search" onclick="get_list()"> 
    <div id="result"> 
    </div> 
</body> 
</html> 

tu jestem spróbować wejścia w textbox nazwy miasta, jeśli jej mecz na moim pliku xml to zwróć mi tam nazwę kraju.
Nie otrzymuję żadnego błędu, ale nie uzyskuję wyniku.
Myślę, że problem w moim xPath pleasae pomóż mi z tego.

+2

Ty widocznie otrzymuje zapytanie z coś zupełnie innego po tym, jak ktoś próbował odpowiedzieć na to pytanie. Dlaczego po prostu nie zaczniesz nowego pytania? – Barmar

+0

Całkowicie zgadzam się z @Barmarem. Nie zaleca się całkowitej zmiany pytania w dniu poprzedzającym termin. Proszę zadać pytanie * nowe *, jeśli masz nowy problem. –

Odpowiedz

7

Zastosowanie:

var xPath = '//*[@value = "' + city + '"]/../../@value'; 

Równoważne wyrażenie jest:

var xPath = '//*[*/*[@value = "' + city + ']]/@value'; 
+0

jego praca ... :) ... –

+0

@JackPhp, Serdecznie zapraszamy –

+0

@DimitreNovatchev Nie są one równoważne, IMO. Wolę używać drugiej wersji, ponieważ nie wymaga ona dwukierunkowego spaceru po drzewie (również w kierunku katalogu głównego). Nie jestem pewien, czy mógłbym znaleźć jakieś dokumenty, ale coś szepcze, że starsze implementacje silników Xpath miały z tym problemy. Również nie jestem całkiem pewien, czy naprawdę chcesz używać asterixa. Nie powinny w nim być kropki, np. 'Var xPath = '//.[./. [Plus]" + "+ miasto +"]]/@ wartość ";'? Porównaj [to] (http: // www. mulberrytech.com/quickref/XSLT_1quickref-v2.pdf).) –

1

O ile pamiętam, listy nie działają tak ... są zmienne związane z daną wartością, więc jest to bardziej jak:

list($a, $b, $c) = [1, 2, 3];

W każdym razie, dlaczego nie zrobić zajrzyj do sekcji "Listy" na stronie phpredis? Jest to jedno z zalecanych klientów PHP Redis, a jej przykłady są dość jasne

Powiązane problemy