Nếu wbMain là kiểm soát WebBrowser1 của bạn, làm như sau.
Trước tiên, bạn cần phải có được một ref cho phần tử của bạn, cho phép nói rằng bạn muốn truy cập vào liên kết <A>
đầu tiên, của trang của bạn, bạn có thể lặp qua tất cả nếu bạn muốn.
Đây là trong VB, nhưng nó cùng một loại điều trong C#, chỉ cú pháp khác nhau.
Dim i As Integer
Dim aElement As HTMLAnchorElement = wbMain.Document.All.getElementByTagName("A")(0)
For i = 0 To aElement.attributes.length - 1
MsgBox aElement.attributes.item(i).name & "=" & aElement.attributes.item(i).value
Next i
Điều này sẽ lặp qua tất cả các thuộc tính và hiển thị nó trong MSGBOX ở định dạng name=value
.
Nếu bạn muốn truy xuất bằng tên (tên thuộc tính), chỉ cần gọi bằng cách sử dụng aElement.getAttribute("target")
để truy xuất giá trị thuộc tính đích từ Liên kết.
Nếu bạn muốn xác nhận bạn có đúng đối tượng/yếu tố, chỉ cần thực hiện aElement.outerHTML
để nhận mã HTML đầy đủ cho phần tử đó.
Vì tôi đang sử dụng phiên bản pre.NET, vui lòng thay đổi tuyên bố từ HTMLAnchorElement thành IHTMLAnchorElement nếu nó gây khó khăn cho bạn, tất nhiên, bạn chỉ có thể sử dụng IHTMLElement nếu bạn muốn xem tất cả các phần tử trên một trang, thì tất cả những gì bạn cần làm là wbMain.Document.All (0) cho phần tử đầu tiên trên một trang, hoặc lặp lại cho đến khi .All.length - 1 đi qua tất cả. Hãy nhớ nếu bạn đang sử dụng lồng nhau Đối với vòng lặp, không sử dụng i hai lần, sử dụng j cho một trong số họ :).
Hãy cho tôi biết nếu điều này trả lời câu hỏi của bạn hoặc nếu có nhiều hơn tôi có thể làm để giúp bạn giải quyết vấn đề của bạn.
Nguồn
2012-02-12 12:04:46
Cảm ơn phản hồi của bạn, nhưng trong trường hợp này tôi phải giữ nguyên cách IE phân tích cú pháp tài liệu. Vì lý do đó, tôi không thể sử dụng HAP. Tôi đang tìm kiếm một giải pháp sử dụng HTMLElement hoặc mã không được quản lý trong trường hợp xấu nhất. – Devela
@Deveta HTMLAgilityPack là khó chịu, tôi sẽ không khuyên bạn nên sử dụng nó. –
@ Devela, tại sao không? – as9876