2010-09-02 70 views
8

Truy vấn XPATH tôi có thể sử dụng để lấy giá trị từ thẻthứ nhất và thứ 3 cho mỗi hàng trong bảng html.Cách lấy dữ liệu bảng từ bảng sử dụng xpath

Truy vấn XPATH Tôi đã sử dụng sử dụng là

/table/tr/td[1]|td[3].

Chỉ trả về giá trị trong thẻ <td> đầu tiên cho mỗi hàng trong bảng.

VÍ DỤ

tôi mong chờ để có được những giá trị bob, 19, jane, 11, cameron và 32 từ bảng dưới đây. Nhưng tôi chỉ nhận được bob, jane, cameron.

<table> 
<tr><td>Bob</td><td>Male</td><td>19</td></tr> 
<tr><td>Jane</td><td>Feale</td><td>11</td></tr> 
<tr><td>Cameron</td><td>Male</td><td>32</td></tr> 
</table> 
+2

Tốt câu hỏi (1). Xem câu trả lời của tôi cho một giải pháp khác, có thể hiệu quả hơn. –

Trả lời

3

Hãy thử

/table/tr/td[1]|/table/tr/td[3] 

Tôi nhớ làm điều này trong quá khứ và tìm thấy nó khá khó chịu vì nó là xấu xí và dài dòng

+0

câu trả lời đúng, nhưng tôi không thấy sự xấu xí. Đây cũng là XPath 1.0, nhưng trong XPath 2.0 bạn có thể sử dụng '/ table/tr/(td [1] | td [3])' –

+0

@Alejandro - có vẻ không chính xác. Có lẽ bạn có nghĩa là một cái gì đó giống như biểu hiện trong câu trả lời của tôi? :) –

+0

@Dimitre: câu trả lời của jakenoble phù hợp với tôi. Ngoài ra biểu thức XPath 2.0 của tôi. –

8

@ câu trả lời jakenoble của:

/table/tr/td[1]|/table/tr/td[3] 

là chính xác.

Một biểu thức XPath tương đương mà tránh được điều hành | (công đoàn) và có thể hiệu quả hơn là:

/table/tr/td[position() = 1 or position() = 3] 
Các vấn đề liên quan