<p>目前工做中在開發一個wap端的項目。雖然如今wap太老了。。沒辦法工做嘛。</p> <p>不過仍是遇到了不少問題。 因爲wap端是用xhtml mp來開發,相對於html而言。 更佳規範更佳嚴謹。</p> <p>上週遇到一個問題。 有一些數據是取數據庫裏的 clob字段。可是clob字段儲存的是由word 轉換成html的內容 。</p> <p>裏面的不管是標籤仍是樣式 都不符合xhtml的標準。致使取出來的時候 根本前端根本顯示不了。</p> <p>週末在家,谷歌各類尋找 找到了 JTidy  html 解析器。帶有將html轉成xhtml的功能,並且配置簡單,功能強大。</p> <p>應該能夠有效的解決個人問題。</p> <p>另外經過這段代碼的編碼,發現個人I/O學的渣如狗啊!!!媽的 過一陣得惡補啊!</p> <p><a href="http://sourceforge.net/projects/jtidy/">Jtidy 源碼和jar包地址</a></p> <p>下面附個人示例代碼:</p>html
<!-- lang: java --> public String parseXhtml(String f_in){ ByteArrayInputStream stream = new ByteArrayInputStream(f_in.getBytes()); ByteArrayOutputStream tidyOutStream = new ByteArrayOutputStream(); //實例化Tidy對象 Tidy tidy = new Tidy(); //設置輸入 tidy.setInputEncoding("gb2312"); //若是是true 不輸出註釋,警告和錯誤信息 tidy.setQuiet(true); //設置輸出 tidy.setOutputEncoding("gb2312"); //不顯示警告信息 tidy.setShowWarnings(false); //縮進適當的標籤內容。 tidy.setIndentContent(true); //內容縮進 tidy.setSmartIndent(true); tidy.setIndentAttributes(false); //只輸出body內部的內容 tidy.setPrintBodyOnly(true); //多長換行 tidy.setWraplen(1024); //輸出爲xhtml tidy.setXHTML(true); //去掉沒用的標籤 tidy.setMakeClean(true); //清洗word2000的內容 tidy.setWord2000(true); //設置錯誤輸出信息 tidy.setErrout(new PrintWriter(System.out)); tidy.parse(stream, tidyOutStream); return tidyOutStream.toString(); }
下面在網上看到的一個網友兄弟發的博客內容列舉了一些比較 經常使用的配置 (還有一大堆沒列出來的, 附件裏面有官網給出的配置含義,能夠下載來參考 ):前端
add-xml-decl:是否輸出「<?xml ... ?>」 declaration enclose-text:是否將全部<p>標籤閉合 enclose-block-text:給全部文本加上<p>標籤,使其閉合 show-errors:是否輸出錯誤 show-warnings:是否輸出警告 quote-ampersand:是否將&輸 出爲& quote-marks:是否將「輸出爲" quote-nbsp:是否將空格輸出爲 indent:是否要縮進:block-level tags indent-spaces:每次縮進的空格數 wrap:每行最多字符數,超過則自動換行,若是爲0則不自動換行 char-encoding:字符編碼,相似的還有output-encoding、input-encoding literal-attributes:是否保持attribute中的空白字符不變 force-output:遇到錯誤是否繼續輸出 numeric-entities:是否將字符輸出爲HTML字符實體(如<、>) doctype:是否輸出DOCTYPE tidy-mark:是否要輸出Jtidy的<meta>標籤 drop-font-tags:是否去掉<font>、<center>標籤 clean:是否要清除掉多餘的標籤,這對處理從MS Word中複製到Html中的內容特別有效
Tidy裏面這麼多的配置屬性,要是用戶不當心設了一些互相矛盾的配置怎麼辦? Tidy會自動將低層次的配置調整以知足高層次配置的要求。java
附博客地址數據庫