Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用c从html文档中删除一些标记#_C#_Html - Fatal编程技术网

C# 用c从html文档中删除一些标记#

C# 用c从html文档中删除一些标记#,c#,html,C#,Html,我有一个html文档,我想删除某个类的所有div(以及所有内容)。最简单的方法是什么 谢谢你的帮助 更新: 我按照您的建议尝试了Html敏捷包,但未能达到目标。 我有以下代码 static void Main() { HtmlDocument document = new HtmlDocument(); document.Load(FileName); HtmlNode node = docu

我有一个html文档,我想删除某个类的所有div(以及所有内容)。最简单的方法是什么

谢谢你的帮助

更新:

我按照您的建议尝试了Html敏捷包,但未能达到目标。 我有以下代码
        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();