Получить все HTML-узлы в тексте
У меня есть некоторые тексты (не HTML-документ), которые имеют только a
теги между другими словами, как это (этот пример имеет два a
узлы):
<a rel="nofollow" target="_blank" href="http://loremipsum.net/">http://loremipsum.net/</a>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, <a rel="nofollow" target="_blank" href="http://loremipsum.net/">http://loremipsum.net/</a> sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Я хочу заменить все эти теги словом "link"
, node
в этом коде:
var node = HtmlNode.CreateNode(text);
var links = node.SelectNodes("//a[@href]");
просто ссылается на первую ссылку, но я хочу, чтобы все ссылки внутри текста. Как я могу их найти? Благодарю.
1 ответ
Решение
Выделите все ссылки из документа, а затем замените их внутренний HTML:
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(text);
foreach (var link in doc.DocumentNode.SelectNodes("//a"))
link.InnerHtml = "link";
string result = doc.DocumentNode.OuterHtml;
Результат
<a rel="nofollow" target="_blank" href="http://loremipsum.net/">link</a>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, <a rel="nofollow"
target="_blank" href="http://loremipsum.net/">link</a> sed diam nonummy nibh
euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.