使用HTMLAgilityPack将链接转换为BBCODE?

时间:2012-08-07 14:52:51

标签: c# .net-4.0 html-agility-pack bbcode

我有一些文字,在本文的不同位置,我有一些HTML链接,例如<a href="link">text</a>

我想将其转换为[url=link]text[/url]

我知道如何阅读href和文本,例如:

var link = doc.SelectNodes("//a");
string link = link.Attributes["href"].value;
string text = link.InnerText;

但是我可以将它替换回同一个地方的文本而不会损坏文本,错过位置等吗?

示例:

The brown fox <a href="link">jumped over</a> the table while the rabbit <a href="link">scaped from it</a>.

会变成:

The brown fox [url=link]jumped over[/url] the table while the rabbit [url=link]scaped from it[/url].

1 个答案:

答案 0 :(得分:4)

这样的事情:

HtmlDocument doc = new HtmlDocument();
doc.Load(myTestFile);

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//a[@href]"))
{
    node.ParentNode.ReplaceChild(doc.CreateTextNode("[url=" + node.GetAttributeValue("href", null) +"]" + node.InnerHtml + "[/url]"), node);
}