【发布时间】:2013-09-19 00:37:33
【问题描述】:
我正在使用 HTML Agility Pack 在同一页面上执行两项不同的操作。
对于第一个,我需要删除脚本、样式等元素。
但是对于第二个,我必须保留所有元素。
由于我不能在第一部分之前完成第二部分,所以我首先正在寻找一种复制对象的方法,这样我就可以保存第二部分的所有元素。 那是我尝试过的代码,但由于某些原因,我没有得到其中的节点。
HtmlDocument HTMLdoc = new HtmlDocument();
HTMLdoc.LoadHtml(sFetch);
//duplicate document node
var webPage = HtmlNode.CreateNode("<html></html>");
webPage.CopyFrom(HTMLdoc.DocumentNode,true);
我想到的另一种方法是反转选择我要删除的所有元素的 xpath。所以我将能够只选择它们而无需真正从对象中删除元素。 但我不知道如何使用 XPath“not()”函数来反转我的查询。 这是我的 XPath 查询:
"//script | //style | //iframe | //select | //textarea | //comment() | //a[@href]"
感谢您的时间和帮助:)
【问题讨论】:
-
@L.B 我不明白这是如何回答我的问题的......我不想保留 InnerHtml。我想保留整个节点。
-
你能发布一个示例输入和输出吗?
标签: c# xpath html-agility-pack