C#替换链接,替换多行不能正常工作

时间:2011-09-22 18:00:15

标签: c# regex replace html-agility-pack

我想浏览所有html链接(<a hef="" ><image/></a>),我想用href值替换它们。 为此,我使用HtmlAgilityPack获取所有链接,然后我尝试用href替换链接的任何外部html。

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>

那么我该如何解决这个问题呢?我想只显示以下链接的Text部分和href值。

1 个答案:

答案 0 :(得分: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);
}