如果没有父节点,如何删除节点
本文关键字:删除 节点 何删除 父节点 如果没有 | 更新日期: 2023-09-27 18:31:33
我正在使用HTML敏捷包来清理所见即所得的输入。这可能不是最好的方法,但我正在与那些在接触正则表达式时爆炸的开发人员合作,所以它必须足够了。
我的所见即所得内容如下所示(例如):
<p></p>
<p></p>
<p><span><input id="textbox" type="text" /></span></p>
我需要剥离空段落标签。这是我目前的做法:
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//p");
if (nodes == null)
return;
foreach (HtmlNode node in nodes)
{
node.InnerHtml = node.InnerHtml.Trim();
if (node.InnerHtml == string.Empty)
node.ParentNode.RemoveChild(node);
}
但是,由于 HTML 不是完整的文档,因此段落标签没有父节点,因此RemoveChild
将失败,因为ParentNode
为 null。
不过,我找不到其他删除标签的方法,任何人都可以指出我另一种方法吗?
从技术上讲,第一级元素是文档根目录的子元素,因此以下代码应该有效:
if (node.InnerHtml == String.Empty) {
HtmlNode parent = node.ParentNode;
if (parent == null) {
parent = doc.DocumentNode;
}
parent.RemoveChild(node);
}
你想从集合中删除,对吧?
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//p");
if (nodes == null)
return;
for (int i = 0; i < nodes.Count - 1; i++)
{
nodes[i].InnerHtml = nodes[i].InnerHtml.Trim();
if (nodes[i].InnerHtml == string.Empty)
nodes.Remove(i);
}