在WinRT的HtmlAgilityPack中使用ReplaceChild

本文关键字:ReplaceChild HtmlAgilityPack WinRT | 更新日期: 2023-09-27 18:34:18

我正在尝试在Windows应用商店应用程序中将HTML转换为markdown。以下代码适用于 .NET 4 MVC 项目

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html); 
foreach (var x in doc.DocumentNode.SelectNodes("//strong"))
{
    x.ParentNode.ReplaceChild(
            HtmlAgilityPack.HtmlNode.CreateNode("**" + x.InnerHtml + "**"),
    x);
}

SelectNodes在 WinRT 版本中不可用,因此在移植代码时,我将其替换为后代。

foreach (var x in doc.DocumentNode.Descendants("//strong"))
{
    x.ParentNode.ReplaceChild(
            HtmlAgilityPack.HtmlNode.CreateNode("**" + x.InnerHtml + "**"),
    x);
}

此代码使 HtmlDocument 保持不变。我做错了什么,还是这是一个错误?

在WinRT的HtmlAgilityPack中使用ReplaceChild

Descendants需要一个元素名称,而不是一个XPath,因此您的代码不会返回任何元素并且文档保持不变。

您需要删除斜杠

foreach (var x in doc.DocumentNode.Descendants("strong"))