gpt4 book ai didi

c# - 从 htmldocument :HTMLAgilityPack 中删除 html 节点

转载 作者:可可西里 更新时间:2023-11-01 08:52:22 31 4
gpt4 key购买 nike

在我的代码中,我想删除没有 src 值的 img 标签。 我正在使用 HTMLAgilitypack 的 HtmlDocument 对象。 我发现没有 src 值的 img 并试图将其删除.. 但它给我错误 Collection was modified;枚举操作可能无法执行。 谁能帮我这个? 我使用的代码是:

foreach (HtmlNode node in doc.DocumentNode.DescendantNodes())
{
if (node.Name.ToLower() == "img")
{
string src = node.Attributes["src"].Value;
if (string.IsNullOrEmpty(src))
{
node.ParentNode.RemoveChild(node, false);
}
}
else
{
..........// i am performing other operations on document
}
}

最佳答案

您似乎在枚举期间使用 HtmlNode.RemoveChild 修改了集合方法。

要解决此问题,您需要通过调用例如将节点复制到单独的列表/数组 Enumerable.ToList<T>() Enumerable.ToArray<T>() .

var nodesToRemove = doc.DocumentNode
.SelectNodes("//img[not(string-length(normalize-space(@src)))]")
.ToList();

foreach (var node in nodesToRemove)
node.Remove();

如果我是对的,问题就会消失。

关于c# - 从 htmldocument :HTMLAgilityPack 中删除 html 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12106280/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com