使用dom4j 讀取xml檔案時的中文問題(轉)
阿新 • • 發佈:2019-02-09
使用dom4j 讀取xml檔案時的中文問題:
(一) 在用reader.read(String filename)傳遞的是檔名的時候,遇到中文的路徑則會出錯,丟擲unknow protocol :d異常.而使用英文名則不存在該錯誤.
解決辦法: 用 reader.read(new File(filename)) 代替 reader.read(String filename)
(二) 如果在XML裡面用到了中文,則最好採用下面的方法讀取:
org.dom4j.io.SAXReader reader = new org.dom4j.io.SAXReader();
reader.read(File f)//這裡的檔案如果編碼沒有指定的話會報 “ org.xml.sax.SAXParseException: 缺少檔案根元件" 的錯誤
解決辦法,按檔案儲存的型別讀取檔案,UTF-8相容所有儲存型別
InputStream ifile = new FileInputStream("c:/test.xml");
InputStreamReader ir = new InputStreamReader(ifile, "UTF-8");
// File ir = new File("c:/test.xml"); //這樣讀會報錯,如果該檔案不是utf-8型別的
SAXReader reader = new SAXReader();
Document doc = reader.read(ir);
(一) 在用reader.read(String filename)傳遞的是檔名的時候,遇到中文的路徑則會出錯,丟擲unknow protocol :d異常.而使用英文名則不存在該錯誤.
解決辦法: 用 reader.read(new File(filename)) 代替 reader.read(String filename)
(二) 如果在XML裡面用到了中文,則最好採用下面的方法讀取:
org.dom4j.io.SAXReader reader = new org.dom4j.io.SAXReader();
reader.read(File f)//這裡的檔案如果編碼沒有指定的話會報 “ org.xml.sax.SAXParseException: 缺少檔案根元件" 的錯誤
解決辦法,按檔案儲存的型別讀取檔案,UTF-8相容所有儲存型別
InputStream ifile = new FileInputStream("c:/test.xml");
InputStreamReader ir = new InputStreamReader(ifile, "UTF-8");
// File ir = new File("c:/test.xml"); //這樣讀會報錯,如果該檔案不是utf-8型別的
SAXReader reader = new SAXReader();
Document doc = reader.read(ir);