我想从我的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 text text. <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标签没有关闭标签
答案 0 :(得分:3)
不确定我明白第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]");
然后你可以遍历结果集一次以删除每一个。
答案 1 :(得分:1)
请参阅此remove html node(img) from htmldocument 示例。 你也可以这样做:
var sb = new StringBuilder();
doc.LoadHtml(inputHTml);
foreach (var node in doc.DocumentNode.ChildNodes)
{
if (node.Name != "img" && node.Name!="a")
{
sb.Append(node.InnerHtml);
}
}