2013-04-18 10 views
9

questo è il mio documento XML: -get attributo elemento genitore valore

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

questo è il mio codice html javascript: -

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

eccomi qui cercare di inserire nella casella di testo il nome della città se il suo incontro sul mio file xml poi mi restituisce il nome del paese.
Non ottengo alcun errore ma non ottengo risultati.
Penso che il problema nei miei piaceri xPath mi aiuti a uscire da questo.

+2

È apparentemente sostituito tua domanda con qualcosa di completamente diverso dopo che qualcuno ha provato a rispondere. Perché non iniziare una nuova domanda? – Barmar

+0

Sono completamente d'accordo con @Barmar. Non è raccomandabile cambiare completamente la domanda solo il giorno prima della scadenza. Per favore, chiedi una * nuova * domanda, se hai un nuovo problema. –

risposta

7

Uso:

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

Un'espressione equivalente è:

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

il suo lavoro ... :) ... –

+0

@JackPhp, Prego –

+0

@DimitreNovatchev Non sono equivalenti, IMO. Preferirei usare la seconda versione in quanto non richiede un albero a due vie (anche verso la radice). Non sono sicuro di poter trovare di nuovo qualche documento, ma c'è qualcosa che sussurra che le vecchie implementazioni dei motori xpath abbiano avuto problemi con esso. Inoltre non sono abbastanza sicuro se vuoi davvero usare l'asterisco. I punti non dovrebbero esserci, come 'var xPath = '//.[./.[@value ="' + città + ']]/@ valore'; '? Confronta [questo] (http: // www. mulberrytech.com/quickref/XSLT_1quickref-v2.pdf). –

1

Per quanto mi ricordo, le liste non funzionano così ... sono variabili associato ad un dato valore, quindi è più simile a:

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

In ogni caso, perché non fare date un'occhiata alla sezione "Liste" nella pagina phpredis? E 'uno dei client PHP consigliati per Redis, ei suoi esempi sono abbastanza chiare

Problemi correlati