替换c#链接,替换多条行不工作

本文关键字:替换 工作 链接 | 更新日期: 2023-09-27 18:09:17

我想通过所有的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>

怎么解呢?我想只显示链接的文本部分,后面是href值。

替换c#链接,替换多条行不工作

这里不需要(也不应该使用)正则表达式。这就是首先使用解析器的全部意义。

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