3
我正在嘗試編寫一個可以再次讀入我的程序的XML庫文件。用Java以不同的字符編碼編寫XML
文件寫入器代碼如下:
XMLBuilder builder = new XMLBuilder();
Document doc = builder.build(bookList);
DOMImplementation impl = doc.getImplementation();
DOMImplementationLS implLS = (DOMImplementationLS) impl.getFeature("LS", "3.0");
LSSerializer ser = implLS.createLSSerializer();
String out = ser.writeToString(doc);
//System.out.println(out);
try{
FileWriter fstream = new FileWriter(location);
BufferedWriter outwrite = new BufferedWriter(fstream);
outwrite.write(out);
outwrite.close();
}catch (Exception e){
}
上面的代碼不寫的XML文檔。
但是,在XML標頭中,它是文件以UTF-16編碼的屬性。
當我在該文件中讀出,我得到的錯誤:
「的內容不允許在序言」
當編碼屬性被手動更改爲UTF-8不會發生此錯誤。
我想獲得上述代碼來編寫以UTF-8編碼的XML文檔,或成功解析UTF-16文件。
解析的代碼是
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder loader = factory.newDocumentBuilder();
Document document = loader.parse(filename);
最後一行將返回錯誤。
如果您告訴我們XMLBuilder是什麼,它可能會有所幫助。在搜索結果的第一頁顯示(我認爲)7個不同的類...搜索結果的第一頁中搜索「XMLBuilder」 – 2010-05-29 04:40:33
哦,對不起,XMLBuilder是一個自創類,它接受Book的SortedSet(文件和元數據的包裝類)並返回一個構建的Document。這部分工作正常。 – romnempire 2010-05-29 06:29:23