2010-02-21 58 views
19

我在我的應用程序中嵌入了HTML Tidy來清理傳入的HTML。但泰迪有大量的錯誤,並直接修復它們是我最糟糕的噩夢。整潔的源代碼是難以理解的憎惡。千行+函數,可變的變量命名,意大利麪條代碼等等。這真是太可怕了。是否有替代HTML Tidy?

更糟糕的是,官方發展seems to have ceased。在過去的12個月中,已有三個向官方CVS回購寫交易。但它已經死了,埋沒的時間比這更長......

因此,我正在尋找一個OSS C或C++應用程序/庫,它可以完成Tidy可以做的事情(當它感覺像這樣)時:修復壞的HTML標記並將其轉換爲有效的XHTML(這是我感興趣的部分)。我的意思是各種糟糕的標記。

有沒有像那樣的東西?

編輯:我需要它通過XML處理工具在DOM樹上的操作以及一般符合XHTML規範。我的應用程序需要接受來自用戶的HTML(通常以各種方式無效)並輸出有效的XHTML。它需要能夠處理甚至通常不會在瀏覽器中顯示的HTML,因爲用戶手動編輯並且之後不檢查。

Tidy的糾錯解析器的一個直接替換...不吸引。如果源代碼可讀,我不介意錯誤,並且我可以自己解決問題,或者是否有活躍的開發人員及時提供錯誤修復。

+0

不知道這對你是否有用,但有一個名爲TagSoup的Java庫(http://home.ccil。org /〜cowan/XML/tagsoup /),它顯然有一些C++端口,可能除了一個不自由,我不確定其他的端口是否維護。它產生一串SAX事件,但將其轉換爲XML輸出應該只是將正確的管道連接到噴嘴的問題。不過,從來沒有使用過它。 – 2010-02-21 19:15:03

回答

2

你能告訴我們你打算使用這個工具嗎?如在,你想修復靜態網頁,或者你想在其他操作之前進行某種過濾步驟,以便某些工具可以處理有問題的網頁?我個人在Python的BeautifulSoup或lxml上編寫我自己的工具,只要我需要 - 它最多隻有十幾行腳本,並且執行我想要的大部分功能。

+0

我無法使用Python或其庫。這是一個GUI,本地代碼應用程序。集成Python解釋器不是一種選擇。 – Lucas 2010-02-21 19:31:26

+0

那麼,對於GUI本地代碼應用程序,在技術上整合Python解釋器*是一個選項,但在評估優缺點時可能不具吸引力。 http://docs.python.org/extending/embedding.html – 2010-02-22 00:12:38

+0

然後我會看看lxml的本地綁定---它可以很好地解析,即使是非常糟糕的html。 – pavpanchekha 2010-02-23 01:31:06

0

對於實際上修復的代碼代碼,您最好的選擇仍然是HTML Tidy。有很多短毛絨,但除了Tidy之外,沒有任何修補HTML錯誤的東西。

乍一看,現代OOP程序員可能會認爲,源代碼是不可讀憎惡,但在C世界,整潔是使用了很多先進的面向對象的概念,並提供了非常周到的接口相當複雜庫幾乎所有的功能都在純粹的C API中公開。

一個偶然的開發者將會失去,但是一旦沉浸其中,代碼就非常美麗。當然,命名約定混合不好,但公關的歡迎!