2010-04-27 39 views
2

是否有一個.NET的HTML清理器可以解析HTML並(例如)將其轉換爲更加機器友好的格式,如XHTML具有HTML Tidy-like功能的託管(.NET)庫?

我試過了HTML敏捷包,但是卻無法正確解析,即使是fairlysimple的例子。

爲了讓HTML的應該正確地分析一個例子:

<html><title>test</title> 
<body> 
    <ul><li>TestElem1 
     <li>TestElem2 
     <li>TestElem3 List: 
      <ul><li>Nested1 
       <li>Nested2</li> 
       <li>Nested3 
      </ul> 
     <li>TestElem4 
    </ul> 
    <p>paragraph 1 
    <p>paragraph 2 
    <p>paragraph 3 
</body></html> 

li標籤不需要關閉(see specification),和neither do P tags。換句話說,上述樣品應被解析爲:

<html><title>test</title> 
<body> 
    <ul><li>TestElem1</li> 
     <li>TestElem2</li> 
     <li>TestElem3 List: 
      <ul><li>Nested1</li> 
       <li>Nested2</li> 
       <li>Nested3</li> 
      </ul></li> 
     <li>TestElem4</li> 
    </ul> 
    <p>paragraph 1</p> 
    <p>paragraph 2</p> 
    <p>paragraph 3</p> 
</body></html> 

既然目的是利用各種機庫,這是一個很大的缺點需要退回到本機代碼(如包裝周圍HTML Tidy ),這將需要額外的部署麻煩,並犧牲平臺獨立性,更不用說在沙盒的情況下是不可能的。

有什麼建議嗎? 總括來說,我在尋找:

  • 的HTML清潔鼻翼HTML整潔
  • 必須能夠應對現實世界的HTML,不僅僅是XHTML,至少是正確讀取有效的HTML 4
  • 必須能夠轉換爲更容易處理的XML格式
  • 應該是一個純粹的管理應用程序。

回答

1

嘗試TidyManaged

+0

我還沒有看到TidyManaged,如果我又需要類似的東西,我要一窺視。然而,你的時間是不可思議的,因爲我*寫了一個補丁,在兩週前爲HTML敏捷包添加了對可選結束標記的支持:http://htmlagilitypack.codeplex.com/workitem/29218 - 我希望他們將整合它,那就是那個。 – 2011-06-03 08:25:08

+0

它看起來像TidyManaged是一個包裝,而不是一個端口;這稍微有點不方便,因爲它不適用於像silverlight這樣的東西,它需要你知道你將在編譯時執行的平臺。儘管如此,對於許多用途來說,這些限制並不是問題。 – 2011-06-03 08:27:00

+0

我在我的博客http://geekswithblogs.net/mnf/archive/2011/06/08/implementations-of-html-tidylib-for-.net.aspx上列出了一些用於.Net的HTML TidyLib的實現 – 2011-06-08 11:46:13