【发布时间】:2017-07-14 23:06:51
【问题描述】:
删除所有空节点和不必要节点的首选方法是什么?例如
<p></p> 应该被删除,<font><p><span><br></span></p></font> 也应该被删除(所以在这种情况下 br 标签被认为是不必要的)
我必须为此使用某种递归函数吗?我在想可能是这样的:
RemoveEmptyNodes(HtmlNode containerNode)
{
var nodes = containerNode.DescendantsAndSelf().ToList();
if (nodes != null)
{
foreach (HtmlNode node in nodes)
{
if (node.InnerText == null || node.InnerText == "")
{
RemoveEmptyNodes(node.ParentNode);
node.Remove();
}
}
}
}
但这显然不起作用(stackoverflow 异常)。
【问题讨论】:
-
“空”和“不必要”之间存在巨大的区别。删除空节点可能会破坏布局。
-
好的,所以我最好不要删除空节点?
-
可能不会,不。另一个原因:如果您真的打算将
img元素视为空,我会感到惊讶。 -
我明白你的意思。我在想,例如为图像添加例外会很容易
标签: c# html-agility-pack