C# 用c从html文档中删除一些标记#
我有一个html文档,我想删除某个类的所有div(以及所有内容)。最简单的方法是什么 谢谢你的帮助 更新: 我按照您的建议尝试了Html敏捷包,但未能达到目标。 我有以下代码C# 用c从html文档中删除一些标记#,c#,html,C#,Html,我有一个html文档,我想删除某个类的所有div(以及所有内容)。最简单的方法是什么 谢谢你的帮助 更新: 我按照您的建议尝试了Html敏捷包,但未能达到目标。 我有以下代码 static void Main() { HtmlDocument document = new HtmlDocument(); document.Load(FileName); HtmlNode node = docu
static void Main()
{
HtmlDocument document = new HtmlDocument();
document.Load(FileName);
HtmlNode node = document.DocumentNode;
HandleNode(node);
}
private static void HandleNode(HtmlNode node)
{
while (node != null)
{
if (node.Name == "div")
{
var attribute = node.Attributes.Where(x => x.Name == "class" && x.Value == "NavContent");
if (attribute.Any())
node.Remove();
}
foreach (var childNode in node.ChildNodes)
{
HandleNode(childNode);
}
}
}
但这不是我想要的。递归永不结束,节点名始终为comment。
以下是我试图解析的htmp文档:
有没有一个很好的例子来说明如何使用Html Agility Pack?
这段代码有什么问题?通常,我通过文件I/O和RegEx解决这类问题(正如评论员尽职尽责地指出的那样,根本不建议处理xml/html文档) 也就是说,如果您想正确地执行它,我非常确定C#中有一个DOM对象 似乎支持XPath请求,这非常方便。这取决于,但您可能需要该库 重新更新:
HandleNode()包含
while(node!=null)
循环,但从不分配给节点。如果开始时(…),我会将其更改为。您正在寻找。要解决您的问题,可以使用LINQ:
是否要删除div及其内容?您的更新应该是一个单独的问题。使事情有条理。我设法使它按我所希望的那样工作。div可能有嵌入的div。那么,您如何理解div的结尾呢?事实上,这就是为什么我要谈论一种正确的方法来做这些事情(比如敏捷包)
foreach(var node in doc.DocumentNode
.Descendants("div")
.Where(d => d.GetAttributeValue("class", "").IndexOf("NavContent") >= 0)
.ToArray())
node.Remove();