嘿那里,我正在遍历我自己的代码库中的所有链接,并因本地化原因将它们从<a href="x">
更改为<asp:HyperLink>
。我正在使用HTMLAgilityPack(和其他东西),我想只为我找到的链接更改OuterHtml对象..但它是只读的吗?
我是HAP的新用户,是否需要创建新节点并删除旧节点?有没有人碰到这个?
谢谢!
答案 0 :(得分:1)
我最终使用了......
node.ParentNode.ReplaceChild(HtmlNode.CreateNode(HrefToAspLinkText(node.OuterHtml)), node)
HMM。工作,但丑陋。
答案 1 :(得分:1)
如果您将整个文档视为字符串,为什么要使用HTML Agility Pack。而是查找标签并替换它们然后回写文档。
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;
}
(未编译,因此可能需要进行一些调整)。