<td></td><td>foo</td>
Làm cách nào để trả về '' cho văn bản của nút rỗng() trong XPath?
Tôi muốn trở ['', 'foo']
nhưng libxml của xpath //td/text()
lợi nhuận chỉ ['foo']
. Làm cách nào để tìm thẻ trống dưới dạng ''
thay vì (không khớp)?
<td></td><td>foo</td>
Làm cách nào để trả về '' cho văn bản của nút rỗng() trong XPath?
Tôi muốn trở ['', 'foo']
nhưng libxml của xpath //td/text()
lợi nhuận chỉ ['foo']
. Làm cách nào để tìm thẻ trống dưới dạng ''
thay vì (không khớp)?
Miễn là bạn đang chọn các nút văn bản cụ thể, bạn không thể. Bởi vì đơn giản là không có nút văn bản trong <td>
đầu tiên.
Khi bạn thay đổi biểu thức XPath thành '//td'
, bạn nhận được hai nút <td>
. Sử dụng giá trị văn bản của họ trong quá trình xử lý tiếp theo.
Trong khi @Tomalak là hoàn toàn đúng, trong XPath 2.0 có thể sử dụng:
//td/string(.)
và điều này tạo ra một chuỗi các chuỗi - mỗi người có chứa các chuỗi giá trị của một td
yếu tố tương ứng.
Vì vậy, trong trường hợp của bạn kết quả sẽ được mong muốn nhất:
"", "foo"
+1. Điều này thực hiện chính xác những gì giải pháp của tôi làm cho XPath 1.0 - nó lấy các nút '
Tôi vết thương lên tìm tất cả các 'nút td' và gọi .text trên chúng. Không phải là mát mẻ như làm tất cả mọi thứ trong một XPath lớn ;-) nhưng nó hoạt động. – joeforker
@joeforker: Miễn là bạn không có quyền truy cập vào XPath 2.0 toàn diện, đó là lựa chọn duy nhất của bạn. :-) – Tomalak