2012-03-22 43 views
0

我想分析的是有像這些元素的XML文件:的SAXException用分號

<element>&amp</element> 
<element>&amp;</element> 

但SAX解析器解析過程中給了我以下異常:

org.xml.sax.SAXParseException: The reference to entity "amp" must end with the ';' delimiter. 
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:249) 
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284) 
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208) 

有任何已知的解決方法這個?

拋出異常Java代碼是這樣的:

DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file); 
+1

以什麼方式是「逃脫的分號」?那是你的*實際* XML?一個簡短但完整的程序演示這個問題,以及一個示例XML文件,真的有幫助。 – 2012-03-22 16:39:54

+0

對不起,我犯了一個錯誤。我現在糾正了我的帖子。 – adranale 2012-03-22 16:53:06

+1

在撰寫問題時請多加小心。當你錯誤地輸入你的問題時,將問題發送給追蹤問題是令人討厭的。 – skaffman 2012-03-22 17:44:10

回答

1

我無法與你所示的XML(你的編輯前)重現此。簡短但完整的程序:

import java.io.*; 
import javax.xml.parsers.DocumentBuilderFactory; 

public class Test { 
    public static void main(String[] args) throws Exception { 
     File file = new File("test.xml"); 
     DocumentBuilderFactory.newInstance() 
      .newDocumentBuilder() 
       .parse(file); 
    } 
} 

隨着文件:

<element>&amp;</element> 

...它沒有錯誤運行。

當文件就是:

<element>&amp</element> 

...它表明你報道了同樣的異常。

我的結論是,它是正確的,而你的文件壞了。在文件中查找每個出現&amp的地方,並找到缺少分號的地方。

+0

你是對的。我的文件包含'&amp;' – adranale 2012-03-22 17:10:15

+2

@adranale:然後它是無效的XML。修理它。下一次,請相信解析器告訴你的是什麼:) – 2012-03-22 17:11:29