2011-05-05 18 views
1

過早結束,這是我的xml文件org.xml.sax.SAXParseException:文件

<?xml version="1.0" encoding="utf-8"?> 
<settings></settings> 

和如下所示

public void load(String fileName) { 
... 
Document xmlDocument = null; 
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = null; 
try 
{ 
    builder = dbFactory.newDocumentBuilder(); 
    xmlDocument = builder.parse(new File (fileName)); 
} 
catch(Exception e) 
{ 
    Log.write(e); 
} 
... 
} 

我的方法當我調用我的方法,收到以下:

[task] org.xml.sax.SAXParseException: Premature end of file. 
[task] at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:249) 
[task] at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284) 
[task] at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208) 
[task] at MyClass.load(MyClass.java:49) 

我完全困惑。

感謝您的任何想法。

-Cyril

+3

檢查'File.exists()''之前builder.parse()',只是爲了確保它是你認爲它是。 – skaffman 2011-05-05 07:23:06

+3

我試圖運行這個代碼,它爲我工作。 – Ammu 2011-05-05 07:39:19

+1

我一直在想這是一個編碼問題(聲明utf-8 xml文件編碼爲非UTF-8),但我的測試沒有證明它。如果文檔格式不正確,任何xml文件都可能存在 – Kojotak 2011-05-05 08:29:43

回答

2

問題可能存在於struts.xml文件中。 struts.xml文件中必須包含以下行。

<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd"> 

<package>標籤必須內sturts.xml文件中<struts>標籤寫入。

+1

問題。 – 2012-01-27 20:35:15

0

確保內容類型content-type:text/xml; charset=utf-8

+0

不好,不幸的是內容類型沒有錯 – 2013-07-08 10:36:51

相關問題