2009-03-27 27 views
9

Có chuyện gì với điều đó? Có vẻ như cách duy nhất để có được một đối tượng HtmlDocument đang hoạt động là sao chép thuộc tính Document của một điều khiển mshtml/webbrowser. Nhưng sinh sản đó là sloooooooooooow. Tôi muốn tránh viết trình phân tích cú pháp HTML của riêng mình và HtmlAgilityPack là copyleft.C#: Đối tượng HtmlDocument không có hàm tạo nào?

Có nguồn nào khác để nhận được một tài liệu HtmlDocument được khởi tạo mà tôi có thể kết xuất HTML từ một chuỗi vào không?

Hoặc, có cách nào để ghi đè thói quen gây phiền nhiễu của HtmlElement khi bạn muốn sử dụng InnerHtml/OuterHtml với thẻ img và phần tử tr không?

Chỉnh sửa: Tôi đang tham chiếu đến System.Windows.Forms.HtmlDocument. Tôi xin lỗi, tôi vẫn còn mới với C# và. Net và biết rất ít về COM và một số những thứ khác chủ đề này sẽ trả về.

+0

nó sẽ giúp ích nếu bạn nói HtmlDocument bạn đang sử dụng bằng cách bao gồm không gian tên hoặc tên thư viện. –

Trả lời

7

Nó không có hàm tạo bởi vì nó chỉ là lớp bao bọc xung quanh một đối tượng không được quản lý.

tham khảo: http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.aspx

HtmlDocument cung cấp một quản lý wrapper xung quanh đối tượng tài liệu của Internet Explorer, còn được gọi là HTML Document Object Model (DOM). Bạn lấy một phiên bản của HtmlDocument thông qua thuộc tính Tài liệu của điều khiển WebBrowser .

Tùy thuộc vào nội dung bạn muốn, bạn có thể muốn xem SGMLReader hoặc cập nhật community version.

+0

Cảm ơn bạn đã có mẹo về SGMLReader. Tôi đã có thể giải quyết vấn đề này bằng cách đọc HTML của tôi vào SGMLReader, chuyển đổi nó thành một tài liệu XML và sau đó tiêm mã đó vào mshtml.HTMLDocument. Cảm ơn bạn! –

4

Lập trình mạnh mẽ?

Khi sử dụng DOM thông qua điều khiển WebBrowser, bạn nên luôn đợi cho đến khi sự kiện DocumentCompleted xảy ra trước khi thử truy cập thuộc tính Tài liệu của điều khiển WebBrowser. Sự kiện DocumentCompleted được nâng lên sau khi toàn bộ tài liệu đã được tải; nếu bạn sử dụng DOM trước đó, bạn có nguy cơ gây ra một ngoại lệ thời gian chạy trong ứng dụng của bạn.

http://msdn.microsoft.com/en-us/library/ms171712.aspx

Các vấn đề liên quan