2012-07-12 70 views
1

我正在從ftp下載文件,並將其保存到本地文件系統,然後使用createXMLStreamReader讀取它。當我嘗試解析它時,出現此錯誤:javax.xml.stream.XMLStreamException: ParseError at [row,col]:[124,316]。當我手動複製並粘貼到另一個文件時,一切正常。我試圖使用this複製文件,文件被複制,但我仍然收到相同的錯誤。我意識到這是由於<xml節點之前的二進制字符引起的,但我不確定如何擺脫它們。XMLStreamException嘗試解析從ftp下載的xml文件

我有過什麼被從FTP複製無法控制,我使用java 1.7

我的代碼檢索文件:

client.connect("ftp.domain.com"); 
client.login("user", "password"); 

String filename = assetsPath + "/ftpExport.xml"; 
fos = new FileOutputStream(filename); 
client.retrieveFile("/Export.xml", fos);

我的代碼來創建StreamReader的:

inputFactory = XMLInputFactory.newInstance(); 
File f = new File(Parser.class.getProtectionDomain().getCodeSource().getLocation().getPath()); 
assetsPath = f.toString()+"/../assets"; 
xmlReader = inputFactory.createXMLStreamReader(
    new FileReader(assetsPath + "/Export.xml"));
+0

請勿使用FileReader讀取xml,否則可能會損壞該文件。使用FileInputStream。 – jtahlborn 2012-07-12 19:12:23

+0

SWAHEEET,使它工作。你可以把你的評論作爲答案,我會接受它 – locrizak 2012-07-12 19:15:22

+0

肯定的事情,完成。 – jtahlborn 2012-07-12 19:16:44

回答

3

請勿使用FileReader讀取xml,否則可能會破壞xml。使用FileInputStream。

+0

爲什麼FileReader損壞文件? – Reddy 2012-07-12 19:18:54

+1

@Reddy - 因爲xml雖然看起來像文本,但實際上是一種二進制格式。編碼嵌入在xml頭本身中。如果您使用錯誤編碼的FileReader,那麼您將破壞xml。您應該_always_將xml數據視爲字節,而不是字符。 – jtahlborn 2012-07-12 19:20:20

+0

明白了,謝謝:) – Reddy 2012-07-12 19:21:51