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的帮助和工具提示说您可以设置它,但您不能。这种(有点难看的)方式有效-谢谢!查看我的评论,以获得“更好”的解决方案。