如果下一个连续标记与第一个标记相同,如何合并标记?
我的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);
}
}
}
}
答案 0 :(得分:1)
这将让您了解如何执行此操作: 您需要按节点名称分组,并遍历结果。之后,只需将其附加到原始文档。
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;
}
}