2009-08-04 10 views
1

こんにちは、私は自分のコードベースのすべてのリンクをトラバースしており、ローカライゼーションの理由から<a href="x">から<asp:HyperLink>に変更しています。私はHTMLAgilityPackを使用しています(そして他のもの)、私はリンクを見つけるためにOuterHtmlオブジェクトを変更したいのですが、それは読み取り専用です。HTMLAgility Pack - OuterHtml読み取り専用ですか?

私はHAPを初めて使いました。新しいノードを作成して古いノードを削除する必要がありますか?誰もこれにぶつかるのですか?

ありがとうございます!私が使用して終了

答えて

1

...

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

うーん。働いたが、醜い。

+1

これは長い間私を悩ませていましたが、OuterHtmlのヘルプとツールチップでは設定できると言われていますが、できません。これ(ちょっと醜い)の仕方がうまくいく - ありがとう! –

+0

私のコメントで「より良い」ソリューションを確認してください。 – jessehouwing

1

ドキュメント全体を文字列として扱う場合、HTMLアジリティパックを使用する理由は何ですか?タグを検索して置き換え、文書を書き戻します。

public HtmlNode ConvertLink(HtmlNode aTag) 
{ 
    var link = HtmlNode.Create("asp:HyperLink"); 
    link.Attributes.Add(...); 
    return link; 
} 

(ないコンパイルされ、そのいくつかの調整が必要になる場合があります):

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は次のようになります。

関連する問題