Html agility pack HTMLAgility Pack-OuterHtml只读?

Html agility pack HTMLAgility Pack-OuterHtml只读?,html-agility-pack,Html Agility Pack,嘿,我正在遍历我自己代码库中的所有链接,出于本地化的原因,将它们从更改为。我正在使用HTMLAgilityPack来处理这个(和其他事情),我只想更改我找到的链接的OuterHtml对象。但是它是只读的吗 我是HAP新手,是否需要创建新节点并删除旧节点?有人碰到过这个吗 谢谢 我最终使用了 node.ParentNode.ReplaceChild(HtmlNode.CreateNode(HrefToAspLinkText(node.OuterHtml)), node) 嗯,工作了,但很难看 如

嘿,我正在遍历我自己代码库中的所有链接,出于本地化的原因,将它们从
更改为
。我正在使用HTMLAgilityPack来处理这个(和其他事情),我只想更改我找到的链接的OuterHtml对象。但是它是只读的吗

我是HAP新手,是否需要创建新节点并删除旧节点?有人碰到过这个吗

谢谢

我最终使用了

node.ParentNode.ReplaceChild(HtmlNode.CreateNode(HrefToAspLinkText(node.OuterHtml)), node)

嗯,工作了,但很难看

如果要将整个文档视为一个字符串,为什么要使用HTML敏捷包。而是查找标签并替换它们,然后写回文档

var doc = new HtmlDocument();
doc.LoadHtml(yourString); // or doc.Load(yourStream);

var links = doc.DocumentNode.Descendants("a");
foreach (var link in links)
{
    link.Parent.Replace(ConvertLink(link), link);
}
string newDocument = doc.DocumentNode.OuterHtml; // Or doc.Save();
您的
ConvertLink
如下所示:

public HtmlNode ConvertLink(HtmlNode aTag)
{
    var link = HtmlNode.Create("asp:HyperLink");
    link.Attributes.Add(...);
    return link;
}

(未编译,因此可能需要一些调整)。

这困扰了我很长时间,OuterHtml的帮助和工具提示说您可以设置它,但您不能。这种(有点难看的)方式有效-谢谢!查看我的评论,以获得“更好”的解决方案。