2011-09-22 79 views
0

我想通過所有的HTML鏈接(<a hef="" ><image/></a>),我想只用href值替換它們。 爲此,我使用HtmlAgilityPack獲取所有鏈接,然後嘗試用href替換鏈接的任何外部html。C#替換鏈接,替換多行不工作

result = result.Replace(l.OuterHtml, l.Text + " " + l.Href); 

這適用於正常的鏈接,但它不適用於嵌入了圖像的長鏈接。 它適用於<a href="http://www.domain.net/">www.domain.Net<br /></a> 但它並不適用於

<a href="http://www.domain.net/property-details.aspx?state=50&amp;search=yes&amp;offset=0&amp;page=2&amp;offset=10&amp;page=3&amp;offset=20&amp;page=4&amp;offset=30&amp;page=5&amp;offset=40&amp;page=6&amp;pid=828"><image style="border: 1px solid #c99982; margin: 5px 0 0px 0;" src="http://domain.com/private/007jg5he/large_289572HESSEL_prop_photos_horse_areas_010-1" alt="Sebastopol" width="158" height="108" /></a> 

工作那麼,如何解決這個問題?我只想顯示href值後面的鏈接的文本部分。

+0

Jakupti,當你說「它不適用於嵌入了圖像的長鏈接」時,請你更具體地說明你的意思。具體來說,你看到了什麼結果? – Kiril

+0

它只是不做替換,它甚至在替換之後顯示與原始內容相同的內容。 result = preresult.Replace(l.OuterHtml,l.Text +「」+ l.Href); preresult = result即使我看到OuterHtml過去存在於文本中也沒有替換完成 –

回答

0

這裏你不需要(也不應該使用)正則表達式。這就是首先使用解析器的關鍵。

HtmlDocument doc = ...; 
var query = doc.DocumentNode.Descendants("a"); 
foreach (var a in query.ToArray()) 
{ 
    a.ParentNode.ReplaceChild(HtmlNode.CreateNode(a.Attributes["href"].Value), a); 
}