C# 使用C以编程方式删除HtmleElement对象#
在C# 使用C以编程方式删除HtmleElement对象#,c#,browser,webbrowser-control,dom,C#,Browser,Webbrowser Control,Dom,在WebBrowser控件中,如何删除HtmlElement对象?HtmlElement类中没有方法可以实现这一点。作为一种解决方法,我可以创建一个“虚拟”HtmlElement(无需将其插入HtmlDocument),然后(通过AppendChild)将要删除的HtmlElement对象插入其中。这感觉像一个黑客。有更好的方法吗 另外,我希望将HtmlElement保留在内存中以供以后使用,而不是简单地销毁它(这就是将其父级的innerHtml设置为空字符串所做的)我知道的唯一其他方法是更改父
WebBrowser
控件中,如何删除HtmlElement
对象?HtmlElement
类中没有方法可以实现这一点。作为一种解决方法,我可以创建一个“虚拟”HtmlElement
(无需将其插入HtmlDocument
),然后(通过AppendChild
)将要删除的HtmlElement
对象插入其中。这感觉像一个黑客。有更好的方法吗
另外,我希望将
HtmlElement
保留在内存中以供以后使用,而不是简单地销毁它(这就是将其父级的innerHtml
设置为空字符串所做的)我知道的唯一其他方法是更改父级的。有一个名为IHTMLDOMNode::removeNode
的方法,它看起来像“官方”方法来实现这一点,但这是mshtml.dll中的非托管代码。我正在寻找更适合C#的代码。您可以通过将元素的outerhtml设置为空字符串来删除该元素
elem.OuterHtml=“”
我希望这就是你想要的
gm看看这个网络控制系统,它有很多功能:
您可以通过id向del元素添加remove方法
希望这有助于添加对Microsoft.mshtml的引用(从.Net选项卡)
不能[始终]与Internet Explorer 6一起使用。例如,基本标记会阻止此方法。谢谢,这让我能够找到它。我的代码可以与:HTMLDocument HTMLDocument=(HTMLDocument)webBrowser1.Document.DomDocument;IHTMLElement tmpElement=htmlDoc.getElementById(“xBar”);IHTMLDOMNode tmpNode=(IHTMLDOMNode)tmpElement;tmpNode.parentNode.removeChild(tmpNode);或者,您可以使用dynamic关键字保存所有内容的显式强制转换,但这样您就不会得到方法存在的编译时验证。
using Microsoft.mshtml;
....
{
...
// To Remove
HTMLDocumentClass htmldoc = wbCtrl.Document.DomDocument as HTMLDocumentClass;
IHTMLDOMNode node = htmldoc.getElementById("xBar") as IHTMLDOMNode;
node.parentNode.removeChild(node);
...
}