今使用Jdom生成xml文件的時候,總是出現0x0,0x8為非法字符,經過搜索,問題原因及解決方法如下:
原因:
xml中需要過濾的字符分為兩類,一類是不允許出現在xml中的字符,這些字符不在xml的定義范圍之內。另一類是xml自身要使用的字符,如果內容中有這些字符則需被替換成別的字符。
第一類字符:
對於第一類字符,我們可以通過W3C的XML文檔來查看都有哪些字符不被允許出現在xml文檔中。
XML允許的字符范圍是“#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]”。因此我們可以把這個范圍之外的字符過濾掉。
需要過濾的字符的范圍為:
\\x00-\\x08
\\x0b-\\x0c
\\x0e-\\x1f
第二類字符:
對於第二類字符一共有5個,如下:
字符 HTML字符 字符編碼
和(and) & & &
單引號 ’
' '
雙引號 ” " "
大於號 > > >
小於號 < < <
我們只需要對這個五個字符,進行相應的替換就可以了
解決方法:
用正則表達式替換,
用正則表達式表示如下:[<>&'\"\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]