Tại sao điều này chọn tất cả các phần tử <li>
trong tài liệu của tôi?Gói Agility Html, SelectNodes từ nút
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(url);
var travelList = new List<Page>();
var liOfTravels = doc.DocumentNode.SelectSingleNode("//div[@id='myTrips']")
.SelectNodes("//li");
Những gì tôi muốn là để có được tất cả các yếu tố trong <li>
<div>
với một id
của "myTrips".
Tôi không nghĩ rằng các truy vấn giống nhau. Trên thực tế, khi anh ta chọn "// div [@ id = 'myTrips'] đầu tiên" thì nút hiện tại sẽ thay đổi. Đó là lý do tại sao lựa chọn thứ hai nên là ".//li" (bất kỳ nơi nào từ nút hiện tại) và không phải "// li" (ở bất kỳ đâu từ gốc). Agility thực hiện chính xác những gì được mong đợi sẽ làm. – derloopkat
@derloopkat, chúng ** là giống nhau (không có IMHO ở đây; nếu chúng không phải là bạn có thể thả dấu chấm trong truy vấn giải pháp, nhưng bạn không thể, có thể không?). Thật không may HTMLAgilityPack tìm kiếm từ gốc, không có vấn đề gì bạn đang ở nút. Phần IMHO là điều này - thường là điểm tập trung vào nút nhất định là bạn tiếp tục tìm kiếm ** từ ** nút đó, không phải từ gốc một lần nữa. Truy vấn giải pháp mà không có dấu chấm được thêm vào trong truy vấn phụ thứ hai sẽ không có ý nghĩa gì cả, do đó đặt câu hỏi tại sao hỗ trợ chúng? – greenoldman
Chúng ta đang nói về những thứ khác nhau. Khi tôi nói các truy vấn không giống nhau, tôi đã nói về "// li" và ".//li". Bởi "những truy vấn", bạn tham khảo các truy vấn dưới đây. – derloopkat