2009-03-27 7 views
9

그게 뭐야? 작동하는 HtmlDocument 객체를 가져 오는 유일한 방법은 mshtml/webbrowser 컨트롤의 Document 속성을 복사하는 것입니다. 그러나 산란은 sloooooooooooow입니다. 내 자신의 HTML 파서 작성을 피하고 싶습니다. HtmlAgilityPack은 카피 레프트입니다.C# : HtmlDocument 개체에 생성자가 없습니다?

문자열에서 HTML을 덤프 할 수있는 인스턴스화 된 HtmlDocument를 가져 오는 다른 소스가 있습니까?

또는 img 태그 및 tr 요소와 함께 InnerHtml/OuterHtml을 사용할 때 HtmlElement의 성가신 습관을 무시할 수있는 방법이 있습니까?

편집 : System.Windows.Forms.HtmlDocument를 참조하고 있습니다. 사과드립니다. 저는 C#과 .Net에 대해 아직 익숙하지 않으며 COM에 대해 거의 알지 못하고이 주제가 제기 한 몇 가지 사항을 알고 있습니다.

+0

당신이 네임 스페이스 또는 라이브러리 이름을 포함하여 사용하고있는 HTMLDocument의 말했다 경우가 도움이 될 것이다. –

답변

7

관리되지 않는 개체 주위의 래퍼 클래스이기 때문에 생성자가 없습니다.

은 참조 : http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.aspx

HTMLDocument의도 HTML 문서 객체 모델 (DOM)로 알려진 인터넷 익스플로러 (Internet Explorer) 문서 객체, 주변 관리 래퍼를 제공합니다. WebBrowser 컨트롤의 Document 속성을 통해 HtmlDocument 의 인스턴스를 가져옵니다.

원하는 것을 따라 SGMLReader 또는 최신 community version을 볼 수 있습니다.

+0

SGMLReader에 대한 정보 주셔서 감사합니다. SGMLReader에서 HTML을 읽고 XML 문서로 변환 한 다음 해당 코드를 mshtml.HTMLDocument에 삽입하여이 문제를 해결할 수있었습니다. 고맙습니다! –

4

강력한 프로그래밍?

WebBrowser 컨트롤을 통해 DOM을 사용하는 경우 WebBrowser 컨트롤의 Document 속성에 액세스하기 전에 DocumentCompleted 이벤트가 발생할 때까지 기다려야합니다. DocumentCompleted 이벤트는 전체 문서가로드 된 후에 발생합니다. 그 전에 DOM을 사용하면 응용 프로그램에서 런타임 예외가 발생할 위험이 있습니다.

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

관련 문제