[c#]从节点中删除"img"和"a"的标签。多选

标签: HTML C#
发布时间: 2017/2/23 4:08:36
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想要从我的 html 中提取仅文本

var sb = new StringBuilder();
doc.LoadHtml(inputHTml);

foreach (var node in Doc.DocumentNode.ChildNodes)
{
    if (node.Name == "strong" || node.Name == "#text" 
        || node.Name == "br" || node.Name == "div" 
        || node.Name == "p" || node.Name != "img")
    {
        sb.Append(node.InnerHtml);
    }
}

现在在我的节点。多选是此 html:

1。

<br><div>text</div><div>, text</div><div>text<br>
<img src="http://example.com/55.jpg" alt="" title="" height="100">
<img src="http://example.com/45.jpg" alt="text" title="text" height="100"></div>

2。

text&nbsp;text&nbsp;text.&nbsp;&nbsp;<a
 href="/content/essie-classics">text</a><br>
  <img> src="" alt="" title="" height="100"><img
 src="http://example.com/img_8862.jpg"
 alt="" title="" height="100"> 

如何删除 img 标记和标记?

img 标记没有结束标记

解决方法 1:

不太明白什么点 2 号手段。但是,如果您想要删除所有 <img> 元素从 HtmlNode ,你可以尝试这种方式︰

var imgs = node.SelectNodes("//img");
foreach (var img in imgs)
{
    img.Remove();
}

Remove()函数将删除 HtmlNode 从它有父。这工作正常我想删除 <img> 甚至没有结束标记的元素。

更新︰

你可以使用这个 XPath 表达式选择所有 <img><a> 在单个查询中的元素︰

node.SelectNodes("//*[self::img or self::a]");

然后,您可以遍历结果集一次删除每个。

上一篇
官方微信
官方QQ群
31647020