Java - XML字元支援報錯An invalid XML character

Alps1992發表於2018-02-26

XML字元支援

嚴格意義上來說, XML需要轉義的字元只有:

<,>,&,”,©;的轉義字元分別如下: &lt; &gt;&amp; &quot; &apos;

但是其實有一些控制字元是不被支援的, 會出現如下報錯:

An invalid XML character (Unicode: 0x**) was found in the comment.

這個報錯是由於內容中含有不被支援的字元:

這些錯誤的發生是由於一些不可見的特殊字元的存在,而這些字元對於XMl檔案來說又是非法的,所以XML解析器在解析時會發生異常,官方定義了XML的無效字元分為三段:   
0x00 - 0x08  
0x0b - 0x0c  
0x0e - 0x1f 

解決方案

最簡單的解決方案是替換掉這些字元, 因為這些字元本身都不可見, 所以替換掉也不會有任何影響.

其中java程式碼為:

string.replaceAll("[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]", "");

也可以在前端就直接替換掉:

string.replace(/[\x00-\x08\x0b-\x0c\x0e-\x1f]/g, '')  

相關文章