2013-04-18 35 views
9

đây là tài liệu xml của tôi: -get thuộc tính yếu tố phụ huynh trị

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

này là mã html javascript của tôi: -

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

đây tôi cố gắng đầu vào trong tên thành phố textbox nếu trận đấu của mình trên tập tin xml của tôi sau đó nó trả lại cho tôi có tên quốc gia.
tôi không nhận được bất kỳ lỗi nào nhưng không nhận được kết quả.
tôi nghĩ rằng vấn đề trong lời giải thích xPath của tôi giúp tôi thoát khỏi điều này.

+2

Bạn dường như thay thế câu hỏi của bạn với một cái gì đó hoàn toàn khác sau khi ai đó cố gắng trả lời nó. Tại sao không chỉ bắt đầu một câu hỏi mới? – Barmar

+0

Tôi hoàn toàn đồng ý với @Barmar. Nó không phải là recommendable để hoàn toàn thay đổi câu hỏi chỉ vào ngày trước thời hạn. Vui lòng hỏi một câu hỏi * mới * nếu bạn gặp sự cố mới. –

Trả lời

7

Sử dụng:

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

Một biểu thức tương đương là:

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

công việc của nó ... :) ... –

+0

@JackPhp, Bạn được chào đón –

+0

@DimitreNovatchev Chúng không tương đương, IMO. Tôi muốn sử dụng phiên bản thứ hai vì nó không yêu cầu hai chiều đi bộ cây (cũng về phía gốc). Tôi không chắc liệu tôi có thể tìm lại bất kỳ tài liệu nào hay không, nhưng có điều gì đó thì thầm rằng những công cụ xpath cũ hơn có vấn đề với nó. Ngoài ra tôi không hoàn toàn chắc chắn nếu bạn thực sự có nghĩa là sử dụng asterix. Không nên chấm vào đó, như 'var xPath = '//.[./.[@value ="' + thành phố + ']]/@ value'; '? So sánh [this] (http: // www. mulberrytech.com/quickref/XSLT_1quickref-v2.pdf) –

1

Theo như tôi nhớ, danh sách không có tác dụng như thế ... họ biến đang liên kết với một giá trị nhất định, do đó, nó giống như:

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

Dù sao, tại sao không bạn hãy xem phần 'Danh sách' trong trang phpredis? Đó là một trong những khách hàng PHP khuyến khích cho Redis, và các ví dụ của nó là khá rõ ràng

Các vấn đề liên quan