我正在尝试删除任何重复或多次出现的任何
我的 html 文档中的标签。这是我到目前为止所想出的(非常愚蠢的代码):
HtmlNodeCollection elements = nodeCollection.ElementAt(0)
.SelectNodes("//br");
if (elements != null)
{
foreach (HtmlNode element in elements)
{
if (element.Name == "br")
{
bool iterate = true;
while(iterate == true)
{
iterate = removeChainElements(element);
}
}
}
}
private bool removeChainElements(HtmlNode element)
{
if (element.NextSibling != null && element.NextSibling.Name == "br")
{
element.NextSibling.Remove();
}
if (element.NextSibling != null && element.NextSibling.Name == "br")
return true;
else
return false;
}
}
该代码确实找到了br标签,但它根本不删除任何元素。
我认为你的解决方案太复杂了,尽管据我了解,这个想法似乎是正确的。
假设,找到所有的可能会更容易<br />
首先,删除那些其前一个兄弟节点<br />
node.
让我们从下一个例子开始:
var html = @"<div>the first line<br /><br />the next one<br /></div>";
var doc = new HtmlDocument();
doc.LoadHtml(html);
现在找到<br />
节点并删除重复元素链:
var nodes = doc.DocumentNode.SelectNodes("//br").ToArray();
foreach (var node in nodes)
if (node.PreviousSibling != null && node.PreviousSibling.Name == "br")
node.Remove();
并得到它的结果:
var output = doc.DocumentNode.OuterHtml;
it is:
<div>the first line<br>the next one<br></div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)