如何在两个web browser.Html文档之间复制DOM子树?

时间:2009-10-01 01:58:03

标签: webbrowser-control dom

WinForm应用程序。我想抓取HTML网页的一部分并将其保存到本地html文件中。

我有一个本地文件,“empty.htm”(在主体中只包含“我是空的”),一个远程网页和两个WebBrowser控件。 WebBrowser1导航到远程页面,WebBrowser2导航到本地文件。两者都适当地显示其内容。

现在我尝试:

            string rootIDToCopy = "InterestingDivID";

            HtmlDocument htmlDocument = webBrowser1.Document;
            HtmlElement rootElementToCopy = 
                             htmlDocument.GetElementById(rootIDToCopy);

            if (rootElementToCopy != null)
            {

                HtmlDocument dest = webBrowser2.Document;
                if (dest != null)
                {
                    HtmlElement destBody = dest.Body;  // Point 1

                    destBody.AppendChild(rootElementToCopy); // Point 2
                }
            }

现在,当我在第1点时,我看到destBody存在,没有孩子并且有一个InnerHTML“我是空的”。 rootElementToCopy看起来有效(有三个孩子和一个好的InnerHtml)。但是,在第2点,我得到“值在预期范围内不会失败”(可能来自Windows.Forms.UnsafeNativeMethods.IHTMLElement2.InsertAdjacentElement)。

帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您可能不被允许:在DOM规范中查看WRONG_DOCUMENT_ERRownerDocument

相反,我认为您可能必须将子树序列化为扁平字符串格式,然后再尝试将其插入到不同的文档中。