1

やあ、私は自分のコード ベース内のすべてのリンクを調べて、ローカライズの理由でから<a href="x">に変更しています。<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 に答える