小蛙的工作常常需要做一些資料庫匯出成 XML 格式,以 XML 達到交換資料的目的,上星期匯出的時候發現 java.io.IOException: The character ‘ ‘ is an invalid XML character 這個 Exception,發生錯誤的檔案因為這個特殊字元導致 XML 匯出不完整,上網查了一些解決辦法記錄在這篇文章中。

一開始發生這個例外的時候,並沒有發現匯出的 XML 檔案是不完整的,直到最近再次處理相同資料要給同事進 Solr 的時候才發現這個問題,在 Stack Overflow 看到這篇文章,才知道其實要做到驗證字元是否合法的方法, Xerces 套件裡面早已經有了,以下方法來自該篇文章:

/* from http://stackoverflow.com/questions/93655/stripping-invalid-xml-characters-in-java */
public static String stripInvalidXmlCharacters(String input) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < input.length(); i++) {
        char c = input.charAt(i);
        if (XMLChar.isValid(c)) {
            sb.append(c);
        }
    }
    return sb.toString();
}

只要新增以上方法,透過 Xerces 中的 XMLChar.charAt(int); 方法就可以驗證該傳入的字元是否合法!

附帶一提,在 Xerces 之前的版本,只需要用到 xerces.jar 就可以了,在比較新的版本似乎要載入以下 JAR 檔:resolver.jar, serializer.jar, xercesImpl.jar, xml-apis.jar。

參考資料:

  1. The Apache XercesTM Project
    http://xerces.apache.org/
  2. The character ‘’ is an invalid XML character exception getting while export data in XML file @ XML forum at JavaRanch
    http://www.coderanch.com/t/477874/XML/character-invalid-XML-character-exception
  3. Stripping Invalid XML characters in Java @ Stack Overflow
    http://stackoverflow.com/questions/93655/stripping-invalid-xml-characters-in-java
  4. 使用SAX處理XML檔案 @ [email protected]
    http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=492
相關文章

SSL For Free – 免費又有綠色鎖頭的 SSL Certificates

之前聽說 Google 會優先搜尋有 https 的網頁 (參考:
2016-07-07 23:00:54
hans

8

Android Vuforia with jPCT-AE (5) – 多重模型載入,以 obj 為例

要進到這系列最後一篇文章了,這篇文章拖了很久,一直沒有時間整理,結果到最後 ... 程式碼留下來了,記憶卻有些模糊了,這邊小蛙配著程式碼盡可能的把還記得的東西寫下來。
2016-07-06 11:24:19
hans

8

Android Vuforia with jPCT-AE (4) – 載入 3DS 測試

延續 jPCT-AE Loader 載入模型的部份,這篇要記錄載入 3ds 檔案格式的方法,基本上跟前面幾個 obj, md2 的方法差不多,只有一些小小的變化而已。
2016-07-06 10:24:33
hans

8

Android Vuforia with jPCT-AE (3) – 載入 md2 測試

前兩篇介紹如何直接透過 jPCT-AE 直接繪圖以及載入 .obj 檔案,這邊繼續介紹 jPCT-AE 載入 md2 的方法,載入動作大致上類似,唯一不同的只有 texture 設定部份。
2016-07-06 09:24:43
hans

8

Android Vuforia with jPCT-AE (2) – 載入 obj 測試

上一篇 Android Vuforia with jPCT-AE (1) –
2016-07-06 08:24:55
hans

8

Android Vuforia with jPCT-AE (1) – 基本範例

說來慚愧,從 Google Adsense 被 ban 之後,就好久沒有發文了,站上 Vuforia 的文章也已經是好久以前的事情了 (遠目),最近有專案要用到 Vuforia,爬以前的文回來看,蛙哩咧 ... 現在已經更新到 Vu
2016-07-06 07:57:58
hans

8

ClickForce (MobiForce) 當機問題

這真是個浪費時間又漫長的過程,CF 推出新版後台以及新版 SDK 的時候,小蛙就下載來測試,一開始小蛙直接套在「我的股票精算師」上,但只要一套上去就當機 ...
2015-09-02 10:32:51
hans

8

我的股票精算師備份功能

常遇到使用者詢問「我的股票精算師」要怎麼備份,這篇記錄一下,需要寫怎麼備份表示軟體設計上有很大的問題,造成使用者使用上的困難,但小蛙最近沒有時間去做修改 ... 只好委屈精算師的使用者了 ><
2015-02-06 18:32:07
hans

8

第一次從淘寶買小米盒子3

最近阿咕有在大螢幕上看韓劇的需求,剛好搭上 Chromecast 的上市,survey 了一些 Android 電視棒。這篇記錄這幾天的經過。

2015-01-04 23:36:33
hans

8




 回覆

你可以使用以下語法 HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">

(required)

(required)

   
© 2012 蛙齋 Suffusion theme by Sayontan Sinha