やあ、私は自分のコード ベース内のすべてのリンクを調べて、ローカライズの理由でから<a href="x">
に変更しています。<asp:HyperLink>
私はこれ (およびその他のもの) に HTMLAgilityPack を使用しています。見つけたリンクの OuterHtml オブジェクトを変更したいのですが、読み取り専用ですか?
HAP を初めて使用しますが、新しいノードを作成して古いノードを削除する必要がありますか? 誰かがこれに遭遇しましたか?
ありがとう!
やあ、私は自分のコード ベース内のすべてのリンクを調べて、ローカライズの理由でから<a href="x">
に変更しています。<asp:HyperLink>
私はこれ (およびその他のもの) に HTMLAgilityPack を使用しています。見つけたリンクの OuterHtml オブジェクトを変更したいのですが、読み取り専用ですか?
HAP を初めて使用しますが、新しいノードを作成して古いノードを削除する必要がありますか? 誰かがこれに遭遇しましたか?
ありがとう!
結局使ってしまった…
node.ParentNode.ReplaceChild(HtmlNode.CreateNode(HrefToAspLinkText(node.OuterHtml)), node)
うーん。働いたが、醜い。
ドキュメント全体を文字列として扱うのに、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;
}
(コンパイルされていないため、微調整が必要になる場合があります)。