Какой лучший способ убрать href из фрагмента HTML-кода?

0

У меня есть следующий фрагмент 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 из всех ссылок и не знаю, как это сделать.

ПРИМЕЧАНИЕ. Я оставил строку, и поэтому ее не отформатировали на нескольких строках кода...

  • 1
    Определите «лучшее». Легко реализовать? Лучшая производительность во время выполнения?
  • 0
    лучший общий метод, это хорошая производительность во время выполнения и простота реализации ...
Показать ещё 9 комментариев
Теги:

4 ответа

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());
  • 0
    Поскольку я хотел, чтобы hrefs не удаляли их, я использовал эту часть кода: var xdoc = XDocument.Parse (s) .Descendants ("a"). Attributes ("href");
  • 0
    Так как теги img являются XHtml, это должно быть хорошо. Если ваш ввод не может быть гарантированно фрагментом XHtml, это не обобщаемый ответ, так как HTML-теги img не являются самозакрывающимися. (Ни много других).
Показать ещё 2 комментария
1

HtmlAgilityPack - это самый рекомендуемый инструмент для анализа и управления HTML.

Некоторый стартовый код будет выглядеть следующим образом (больше образцов - один поиск):

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

можете ли вы просто заменить его на Regex?

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

Вы можете использовать метод AttributeCollection.Remove

YourLink.Attributes.Remove("href");
  • 0
    Было бы замечательно, если бы это не было в необработанном виде.
  • 0
    да, но разве он не должен извлекать ссылку и сохранять ее в переменной перед выполнением любых последующих шагов? я имею в виду, альтернатива состоит в том, чтобы начать регулярное выражение строк, и мы все знаем, как это элегантно ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню