缺少预期的重叠标签

Expected overlapping tags are missing

我正在使用 Html Agility Pack 来解析一些 HTML,它们可以有重叠的标签。

这是一个简单的方法:

public string Parse(string html)
{
    var doc = new HtmlDocument();
    doc.LoadHtml(html);
    var sb = new StringBuilder();
    using (var sw = new StringWriter(sb))
        doc.Save(sw);
    return sb.ToString();
}

input = "<b>bold <i>bold italic</b> italic</i>";
expected = "<b>bold <i>bold italic</i></b><i> italic</i>";
actual = "<b>bold <i>bold italic</i></b> italic";

TagNotOpened 解析器错误也在 </i> 上输出。

我尝试过使用 OptionOutputAsXml 以及将输入放入各种其他标签中,但没有任何效果。

我的预期结果是单词 "italic" 应该是斜体,但标签不应重叠 - 它应该在 </b> 之前关闭并在之后重新打开。有什么方法可以通过 HAP 或类似的库获得我预期的结果吗?

AngleSharp达到预期效果,目前还在积极维护中

如果 Html Agility Pack 无法实现,我会将其标记为答案。