我正在使用 HTML 敏捷包来清理 WYSIWYG 的输入。这可能不是执行此操作的最佳方法,但我正在与接触正则表达式时爆炸式增长的开发人员合作,因此它必须足够了。
我的所见即所得内容看起来像这样(例如):
<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
为空。
不过我找不到其他方法来删除标签,谁能告诉我其他方法?
最佳答案
从技术上讲,第一级元素是文档根的子元素,所以下面的代码应该可以工作:
if (node.InnerHtml == String.Empty) {
HtmlNode parent = node.ParentNode;
if (parent == null) {
parent = doc.DocumentNode;
}
parent.RemoveChild(node);
}
关于c# - 如果没有父节点,如何删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10191364/