程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#移除HTML標記

C#移除HTML標記

編輯:C#入門知識

  移除一段文字中的HTML標記,以消除其中包含的樣式和段落等,最常用的辦法可能就是正則表達式了。但是請注意,正則表達式並不能處理所有的HTML文檔,所以有時采用一個迭代的方式會更好,如for循環。看下面的代碼:

 
 
   
     
       StripTagsRegex( Regex.Replace(source, ,  
     
     Regex _htmlRegex =  Regex( 
     
       StripTagsRegexCompiled( _htmlRegex.Replace(source,  
     
       StripTagsCharArray([] array =   arrayIndex =  inside =  ( i = ; i < source.Length; i++ let = (let == =  (let == =  (!=++  (array, 

  代碼中提供了兩種不同的方式來移除給定字符串中的HTML標記,一個是使用正則表達式,一個是使用字符數組在for循環中進行處理。來看一下測試的結果:

   html =  +
            

  輸出結果如下:



  上述代碼中分別調用了HtmlRemoval類中的三個不同的方法,均返回了相同的結果,即去除了給定字符串中的HTML標記。推薦使用第二種方法,即直接引用一個預先定義好的RegexOptions.Compiled的正則表達式對象,它比第一種方法速度更快。但是RegexOptions.Compiled有一些缺點,在某些情況下它的啟動時間會增加數十倍。具體的內容可以查看下面這兩篇文章:

RegexOption.Compiled

Regex Performance

  通常,正則表達式的執行效率並不是最高的,所以HtmlRemoval類中給定了另一種方法,使用字符數組來處理字符串。測試程序提供了1000個HTML文件,每個HTML文件中有大約8000個字符,所有的文件均通過File.ReadAllText方式進行讀取,測試結果顯示字符數組的方式執行速度是最快的。

Performance test for HTML removal

HtmlRemoval.StripTagsRegex:         
HtmlRemoval.StripTagsRegexCompiled: 
HtmlRemoval.StripTagsCharArray:      287 ms [最快]

File length test for HTML removal File length before: HtmlRemoval.StripTagsRegex: HtmlRemoval.StripTagsRegexCompiled: HtmlRemoval.StripTagsCharArray:

  所以,使用字符數組來處理大批量的文件時可以節省時間。在字符數組方法中,僅僅只是將非HTML標記的字符添加到數組緩沖區,為了提高效率,它使用字符數組和一個新的字符串構造器來接收字符數組和范圍,這個會比使用StringBuilder速度更快。

對於自關閉的HTML標記

  在XHTML中,某些標記並不具有獨立的關閉標簽,如<br/>,<img/>等。上述代碼應該能夠正確處理自關閉的HTML標記。下面是一些支持的HTML標記,注意,正則表達式方法可能無法正確處理無效的HTML標記。

Supported tags

<img src="" />
<img src=""/>
<br />
<br/>
< div >
<!-- -->

HTML文檔中的注釋

  本文給出的代碼對移除HTML文檔注釋中的HTML標記可能會失效。有些時候,注釋中可能會包含一些無效的HTML標記,在處理時這些HTML標記不會被完全移除。但是,掃描這些不正確的HTML標記有時可能是必要的。

如何驗證

  有許多種方法可以用來驗證XHTML,我們可以采用和上面代碼相同的方式來進行迭代。一個簡單的方法是對'<'和'>'進行計數,從而確定它們是否匹配,或者采用正則表達式進行匹配。這裡有一些資源介紹了這些方法:

HTML Brackets: Validation

Validate XHTML

  有許多方法都可以用來去除給定字符串中的HTML標記,它們返回的結果也都是正確的。毫無疑問,采用字符數組進行迭代的效率最高。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved