Bất cứ ai cũng biết cách lấy vị trí của một nút bằng cách sử dụng xpath?Tìm vị trí của một nút bằng cách sử dụng xpath
Nói rằng tôi có xml sau:
<a>
<b>zyx</b>
<b>wvu</b>
<b>tsr</b>
<b>qpo</b>
</a>
tôi có thể sử dụng truy vấn xpath sau đây để chọn thứ ba <b> nút (<b> TSR </b >):
a/b[.='tsr']
Đó là tất cả tốt và tốt nhưng tôi muốn trả lại vị trí thứ tự của nút đó, chẳng hạn như:
a/b[.='tsr']/position()
(nhưng làm việc nhiều hơn một chút!)
Là nó thậm chí có thể?
chỉnh sửa: Quên đề cập đến đang sử dụng .net 2 vì vậy nó là xpath 1.0!
Cập nhật: Đã kết thúc bằng James Sulak 's excellent answer. Đối với những người quan tâm, đây là triển khai của tôi trong C#:
int position = doc.SelectNodes("a/b[.='tsr']/preceding-sibling::b").Count + 1;
// Check the node actually exists
if (position > 1 || doc.SelectSingleNode("a/b[.='tsr']") != null)
{
Console.WriteLine("Found at position = {0}", position);
}
'Coz Tôi đang sử dụng .net hoặc là nó hoặc tôi không thể xử lý sức mạnh tôi đã đi với: int position = doc.SelectNodes ("a/b [. =' Tsr ']/trước-Sibling :: b ") .Count + 1; if (position> 1 || doc.SelectSingleNode ("a/b [. = 'tsr']")! = null) // Kiểm tra nút thực sự tồn tại {// Do magic here} –
trong các ngôn ngữ được lập chỉ mục bằng không bạn don ' t cần +1 –