从html代码片段中删除href的最佳方法是什么?

时间:2013-10-24 18:39:47

标签: c# html

我有以下html片段:

<p>​<a href=\"/es-es/Documents/test.txt\"><img class=\"ms-asset-icon ms-rtePosition-4\" src=\"/_layouts/15/images/ictxt.gif\" alt=\"\" />test.txt</a><a href=\"/es-es/Documents/test%20-%20Copy.txt\"><img width=\"16\" height=\"16\" class=\"ms-asset-icon ms-rtePosition-4\" src=\"/_layouts/15/images/ictxt.gif\" alt=\"\" />test - Copy.txt</a><a href=\"/es-es/Documents/test%20-%20Copy%20(2).txt\"><img width=\"16\" height=\"16\" class=\"ms-asset-icon ms-rtePosition-4\" src=\"/_layouts/15/images/ictxt.gif\" alt=\"\" />test - Copy (2).txt</a></p>

这个html是一个字符串。我需要从所有链接中删除hrefs,我不知道该怎么做。

注意:我保留了字符串,这就是为什么它没有在多行代码上格式化...

4 个答案:

答案 0 :(得分:1)

HtmlAgilityPack是解析和操作HTML的最佳推荐工具。

一些起始代码看起来如下(更多样本是一次搜索):

var htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(htmlString);  
var aNodesWithHref = htmlDoc.DocumentNode.SelectNode("//a[@href]");

答案 1 :(得分:1)

试试这个。您可以使用XML操作轻松实现预期结果。

string s = "<p>​<a href=\"/es-es/Documents/test.txt\"><img class=\"ms-asset-icon ms-rtePosition-4\" src=\"/_layouts/15/images/ictxt.gif\" alt=\"\" />test.txt</a><a href=\"/es-es/Documents/test%20-%20Copy.txt\"><img width=\"16\" height=\"16\" class=\"ms-asset-icon ms-rtePosition-4\" src=\"/_layouts/15/images/ictxt.gif\" alt=\"\" />test - Copy.txt</a><a href=\"/es-es/Documents/test%20-%20Copy%20(2).txt\"><img width=\"16\" height=\"16\" class=\"ms-asset-icon ms-rtePosition-4\" src=\"/_layouts/15/images/ictxt.gif\" alt=\"\" />test - Copy (2).txt</a></p>";
var xdoc = XDocument.Parse(s);
            xdoc.Descendants("a")
            .Attributes("href")
            .Remove();
        Console.WriteLine(xdoc.ToString());

答案 2 :(得分:0)

您可以使用AttributeCollection.Remove方法

YourLink.Attributes.Remove("href");

答案 3 :(得分:0)

你可以用Regex替换它吗?

string newString = Regex.Replace(oldString, @"<a href[^>]+>", @"");