1

嘿,我正在遍历我自己的代码库中的所有链接,并出于本地化原因将它们从 更改<a href="x">为's。<asp:HyperLink>我正在为此(和其他事情)使用 HTMLAgilityPack,我只想更改我找到的链接的 OuterHtml 对象..但它是只读的?

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

谢谢!

4

2 回答 2

1

我最终使用...

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

唔。工作,但丑陋。

于 2009-08-04T19:08:39.297 回答
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;
}

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

于 2012-05-02T13:23:22.920 回答