在 HTML 中合并节点



如果下一个连续标签与第一个标签相同,如何合并标签?

我的 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;
            }
        }

相关内容

  • 没有找到相关文章