2011-12-02 160 views
0

我正在将数据从1个数据库导入到另一个数据库。我一直要求去除所有的HTML内容,因为它的混乱和无效的,并且只保留链接去除除锚定标记之外的所有HTML标记

我目前使用下面的VB.NET功能,从内容的字符串中去除所有的HTML标签:

Public Shared Function StripHTML(ByVal htmlString As String) As String 
    Dim pattern As String = "<(.|\n)*?>" 
    Return Regex.Replace(htmlString, pattern, String.Empty) 
End Function 

我正在寻找一种剥离所有内容的方式,但从内容中剥离a(锚点)标记。

举例来说,如果我有以下HTML内容:

<table> 
    <tr> 
    <td> 
     Lorem <a href="http://google.com">Ipsum</a> 
    </td> 
    </tr> 
</table> 

这简直成了:

Lorem <a href="http://google.com">Ipsum</a> 

我怎样才能做到这一点?

+0

你能不能给我们介绍一下你的任务一点点的更多信息?你想达到什么目的? –

+0

我正在将数据从1个数据库导入到另一个数据库。我被要求去掉所有的HTML内容,因为它的混乱和无效,只是保持链接 – Curt

回答

2

我建议你使用Html Agility Pack

还要检查这个问题/答案:HTML Agility Pack strip tags NOT IN whitelist

+0

你有任何vb.net的例子?我正在努力转换此代码 – Curt

+0

@科特谷歌和SO搜索框是你亲爱的朋友;-) http://stackoverflow.com/questions/3140919/stripping-all-html-tags-with-html-agility-pack –

+0

@Curt使用这个工具http://www.developerfusion.com/tools/convert/csharp-to-vb/ –

0

你可以试试这个

<((?!a[ ]).|\n)*?> 
+0

这仍然删除'' – Curt

0

相反剥离所有标签的,但锚可以使用反向逻辑和只获得锚点。 你为什么不尝试使用以下方式来提取锚:

(?<anchor><a.*?href=[""'](?<url>.*?)[""'].*?>(?<name>.*?)</a>) 

HTH 帕维尔

+0

我需要的内容也不是锚点,但不仅仅是一个列表的锚点 – Curt