C# 删除“;img";及;a「;node.InnerHtml中的标记
我只想从html中提取文本C# 删除“;img";及;a「;node.InnerHtml中的标记,c#,html,html-agility-pack,C#,Html,Html Agility Pack,我只想从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
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);
}
}
现在在my node.InnerHtml中是以下html:
一,
文本,文本文本
二,
text
如何删除img和a标签
img标签没有关闭标签参见此示例。
您也可以这样做:
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);
}
}
请参考此示例。
您也可以这样做:
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);
}
}
我不知道第二点是什么意思。但是,如果要从
HtmlNode
中删除所有
元素,可以尝试以下方法:
var imgs = node.SelectNodes("//img");
foreach (var img in imgs)
{
img.Remove();
}
Remove()
函数将从其父节点中删除HtmlNode
。这对我来说很好,可以删除
元素,即使没有结束标记
更新:
可以使用此XPath表达式在单个查询中选择所有
和
元素:
node.SelectNodes("//*[self::img or self::a]");
然后您可以在结果集中迭代一次,以删除其中的每一个。我不知道第2点是什么意思。但是,如果要从
HtmlNode
中删除所有
元素,可以尝试以下方法:
var imgs = node.SelectNodes("//img");
foreach (var img in imgs)
{
img.Remove();
}
Remove()
函数将从其父节点中删除HtmlNode
。这对我来说很好,可以删除
元素,即使没有结束标记
更新:
可以使用此XPath表达式在单个查询中选择所有
和
元素:
node.SelectNodes("//*[self::img or self::a]");
然后,您可以遍历结果集一次,以删除其中的每一个