如果下一个连续标签与第一个标签相同,如何合并标签?
我的 HTML 中有此标签
<p>This is a text<b>Focus on the Family Great Stories collection</b><b>—</b> This is a textagain <b>bold</b></p>
这应该是输出
<p>This is a text<b>Focus on the Family Great Stories collection—</b> This is a textagain <b>bold</b></p>
我有这个代码
我需要如何处理我的代码?
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
foreach (var item in doc.DocumentNode.Descendants("p").ToList())
{
if (item.HasChildNodes)
{
foreach (var ch in item.ChildNodes)
{
if (ch.Name != "#text")
{
Console.WriteLine(ch.Name);
}
}
}
}
这将给你一个如何做到这一点的想法:您需要按节点名称分组,并循环访问结果。之后,只需将其附加到原始文档中即可。
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("<p><b>Focus on the Family Great Stories collection</b><b>—</b></p>");
foreach (var item in doc.DocumentNode.Descendants("p").ToList())
{
if (item.HasChildNodes)
{
var grouped = item.ChildNodes.GroupBy(_ => _.Name);
HtmlNode newNode = doc.CreateElement(grouped.FirstOrDefault().Key);
foreach (var bNode in grouped.FirstOrDefault())
{
newNode.InnerHtml += bNode.InnerText;
}
item.InnerHtml = newNode.OuterHtml;
}
}