繁体   English   中英

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

[英]What's the best way to strip a href from a fragment of html code?

我有以下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,我不知道如何解决这个问题。

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

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

一些起始代码看起来像下面(更多样本是一个搜索):

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

尝试这个。 您可以使用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());

您可以使用AttributeCollection.Remove方法

YourLink.Attributes.Remove("href");

你能用正则表达式替换它吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM