天天看點

sax錯誤:org.xml.sax.SAXParseException: Content is not allowed in prolog 終極解決

原因及其解決辦法:

1.xml編碼錯誤

該xml是UTF-8編碼的,如果該檔案通過UltraEdit編輯後,會在無BOM頭的UTF-8檔案中加入BOM,但是DOM4j不認這個BOM(dom4j1.3),解決的辦法可以通過更新dom4j到1.6解決 www.dom4j.org

什麼是BOM? http://www.unicode.org/faq/utf_bom.html#22Unicode 規範中有一個BOM的概念。BOM——Byte Order Mark,就是位元組序标記。在這裡找到一段關于BOM的說明:

在UCS 編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字元,它的編碼是FEFF。而FFFE在UCS中是不存在的字元,是以不應該出現在實際傳輸中。UCS規範建議我們在傳輸位元組流前,先傳輸字元"ZERO WIDTH NO-BREAK SPACE"。這樣如果接收者收到FEFF,就表明這個位元組流是Big-Endian的;如果收到FFFE,就表明這個位元組流是Little- Endian的。是以字元"ZERO WIDTH NO-BREAK SPACE"又被稱作BOM。

UTF-8不需要BOM來表明位元組順序,但可以用BOM來表明編碼方式。字元"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF。是以如果接收者收到以EF BB BF開頭的位元組流,就知道這是UTF-8編碼了。

Windows就是使用BOM來标記文本檔案的編碼方式的。

2.xml檔案存在非法字元

把xml 動手敲一遍,删除不該有的間隔符:比如空格,制表符(TAB)等。

異常提示是Content is not allowed in prolog.意思就是說檔案開頭的時候有問題。