gpt4 book ai didi

c# - 从 node.InnerHtml 中删除 "img"和 "a"标签

转载 作者:太空宇宙 更新时间:2023-11-03 21:34:47 26 4
gpt4 key购买 nike

我只想从我的 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);
}
}

现在在我的 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和a标签?

img 标签没有关闭标签

最佳答案

不确定我是否理解第 2 点的含义。但是如果你想删除所有 <img>来自 HtmlNode 的元素,你可以这样试试:

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

Remove()函数将删除 HtmlNode从它的 parent 。这对我来说很好删除 <img>元素,即使没有结束标记。

更新:

您可以使用此 XPath 表达式来选择所有 <img><a>单个查询中的元素:

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

然后您可以遍历结果集一次以删除它们中的每一个。

关于c# - 从 node.InnerHtml 中删除 "img"和 "a"标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22314299/

26 4 0